FreeImage:获取像素颜色
FreeImage: Get pixel color
我正在编写一个小应用程序,读取图像中每个像素的颜色并将其写入文件。首先我是用Python做的,但是它在处理大图像时太慢了。然后我发现了FreeImage库,我可以使用,但我不明白如何使用GetPixelColor方法。你能提供一个例子,如何获得颜色,例如,像素[50:50]?这里是关于GetPixelColor的信息:http://freeimage.sourceforge.net/fnet/html/13E6BB72.htm。非常感谢!
使用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来反转。
要从输入图像:img,从函数调用中获取像素颜色,例如:void read_image(const char* img)
,请遵循下面的代码片段。
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;
希望有帮助!
相关文章:
- 如何在24位SDL_Surface上设置像素的颜色
- 如何从SDL_Surface获取特定像素的颜色
- 如何返回定义良好的内存部分?例如来自图像数据的像素的颜色值
- 访问和更改基于另一个图像的像素颜色-opencv c++
- 可视化 如何获取图像中像素的颜色(以C++ (sfml) 为单位)
- OpenCV 访问像素的颜色值
- 无法获取窗口 C++ 的像素颜色
- 如何使用 openCV 更改图像每个像素的颜色
- 用Xcb而不是Xlib抓取像素的颜色
- 无法在QImage上绘制或更改像素的颜色
- 为什么像素不改变颜色
- 如何使用stb_image将像素颜色数据写入 BMP 图像文件?
- 检测特定像素上的某种颜色并在检测到后发送点击的最快方法是什么?
- 无法将图像的所有像素更改为所选颜色
- 如何使用 glDrawPixel 时更改像素的颜色,我的像素始终为红色
- 如何在 QLabel 中以像素为单位放置颜色数据
- 获取 OpenGL 纹理中特定像素的颜色
- 根据OPENCV中一个通道中的一个值,查找最大颜色像素
- glsl-获取像素颜色[像素着色器]
- magick++修剪像素不是背景颜色(像素的顶部和底部的图像相同的颜色)