Получение png по координатам в C ++ - PullRequest
2 голосов
/ 05 октября 2011

Хотелось бы узнать, есть ли какая-нибудь библиотека для C ++ или C, которая позволяет получать png-изображение по координатам.Например: я открыл файл png, и мне нужно получить только его часть, которая начинается с

x = 5
y = 5
w = 10
h = 10
and so on

Так какая библиотека позволяет выполнять такие операции?Спасибо заранее

Ответы [ 3 ]

4 голосов
/ 05 октября 2011

Использование Магия ++ :

#include <Magick++.h> 
using namespace Magick; 

void main()
{
    Image image;
    image.read( "in.png" );

    // Crop the image to specified size (width, height, xOffset, yOffset)
    image.crop( Geometry(10, 10, 5, 5) );

    // Write the image to a file
    image.write( "out.png" ); 
}
2 голосов
/ 05 октября 2011

Большинство библиотек сделают это за вас. В OpenCV:

Заголовки:

#include <cv.h>
#include <highgui.h>

Код:

IplImage *im = cvLoadImage("input.png");
cvSetImageROI(im, cvRect(x, y, w, h));
cvShowImage("output.png", im);
1 голос
/ 05 октября 2011

Как сказал @misha, большинство библиотек имеют эту функцию.Библиотека boost.GIL может сделать это тоже:

#include <boost/gil/gil_all.hpp>
// I need this bugfix to compile against libpng 1.5, your mileage may vary
#define int_p_NULL (int*)NULL
// done with the fix
#include <boost/gil/extension/io/png_dynamic_io.hpp>
int main()
{
    boost::gil::rgb8_image_t img;
    png_read_image("in.png", img);
    png_write_view("out.png", subimage_view(const_view(img), 5, 5, 10, 10));
}

Для компиляции требуется только -lpng.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...