0

我正在编写一个小应用程序,它读取图像中每个像素的颜色并将其写入文件。首先我是用 Python 做的,但是在大图像上它太慢了。然后我发现了可以使用的 FreeImage 库,但我不明白如何使用 GetPixelColor 方法。您能否提供一个有关如何获取颜色的示例,例如像素 [50:50]?以下是有关 GetPixelColor 的信息:http: //freeimage.sourceforge.net/fnet/html/13E6BB72.htm。非常感谢!

4

2 回答 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 回答