我正在编写一个小应用程序,它读取图像中每个像素的颜色并将其写入文件。首先我是用Python做的,但在大图像上它的速度太慢了。然后我发现了FreeImage库,我可以使用它,但我无法理解如何使用GetPixelColor方法。 你能否提供一个如何获得颜色的例子,例如像素[50:50]? 以下是有关GetPixelColor的信息:http://freeimage.sourceforge.net/fnet/html/13E6BB72.htm。 非常感谢你!
答案 0 :(得分:4)
使用24或32位图像的FreeImagePlus,在coords 50,50处获得像素将如下所示:
fipImage input;
RGBQUAD pixel;
input.load("myimage.png");
height = in.getHeight();
in.getPixelColor(50, height-1-50, &pixel);
请注意,在FreeImage中,原点位于左下角,因此可能需要通过从图像高度中减去y来反转y值。
答案 1 :(得分:0)
要从输入图像中获取像素颜色:img,从函数调用中可以说:void read_image(const char* img)
,请按照下面的代码段进行操作。
以下是read_image函数的代码片段:
FREE_IMAGE_FORMAT fif = FreeImage_GetFIFFromFilename(img);
FIBITMAP *bmp = FreeImage_Load(fif, img);
unsigned width = FreeImage_GetWidth(bmp);
unsigned height = FreeImage_GetHeight(bmp);
int bpp = FreeImage_GetBPP(bmp);
FIBITMAP* bitmap = FreeImage_Allocate(width, height, bpp);
RGBQUAD color; FreeImage_GetPixelColor(bitmap, x, y, &color);
变量color
将包含图像像素的颜色。您可以按如下方式提取rgb值:
float r,g,b;
r = color.rgbRed;
g = color.rgbGreen;
b = color.rgbBlue;
希望它有所帮助!