我正在编写一个小应用程序,它读取图像中每个像素的颜色并将其写入文件。首先我是用 Python 做的,但是在大图像上它太慢了。然后我发现了可以使用的 FreeImage 库,但我不明白如何使用 GetPixelColor 方法。您能否提供一个有关如何获取颜色的示例,例如像素 [50:50]?以下是有关 GetPixelColor 的信息:http: //freeimage.sourceforge.net/fnet/html/13E6BB72.htm。非常感谢!
问问题
6079 次
2 回答
4
使用 FreeImagePlus 使用 24 或 32 位图像,获取坐标 50、50 处的像素将如下所示:
fipImage input;
RGBQUAD pixel;
input.load("myimage.png");
height = in.getHeight();
in.getPixelColor(50, height-1-50, &pixel);
请注意,在 FreeImage 中,原点位于左下方,因此可能需要通过从图像高度减去 y 来反转 y 值,如上所示。
于 2011-11-09T00:26:05.347 回答
-1
要从输入图像中获取像素颜色: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;
希望能帮助到你!
于 2013-10-03T15:30:16.580 回答