通过C ++中的坐标获取png

时间:2011-10-05 15:28:07

标签: c++ c png

我想知道是否有任何C ++或C库允许通过坐标获取png-image。例如: 我已经打开了png文件,我只需要从

开始获取它的parf
x = 5
y = 5
w = 10
h = 10
and so on

那么什么库允许进行这种操作? 先谢谢

3 个答案:

答案 0 :(得分:4)

使用Magic++

#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" ); 
}

答案 1 :(得分:2)

大多数图书馆都会为您做这件事。在OpenCV中:

接头:

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

代码:

IplImage *im = cvLoadImage("input.png");
cvSetImageROI(im, cvRect(x, y, w, h));
cvShowImage("output.png", im);

答案 2 :(得分:1)

像@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