我正在尝试将相机拍摄的图像转换为8位图像。这应该是灰度图像。
我在论坛中搜索但能够找到转换为8位图像的方法。
任何帮助或建议对我都有帮助。
...谢谢
答案 0 :(得分:0)
您提供的信息太少。首先,您的相机提供的图像格式是什么?它是一些RAW格式,jpeg还是其他什么?
以编程方式执行(例如,使用C语言):
最好的方法是使用一些图像加载库(例如SDL_image),并将图像加载到内存中,未压缩的RGB是目标格式。一旦有了未压缩的RGB图像格式,就可以执行类似
的操作// bufPtr points to the start of the memory containing the bitmap
typedef unsigned char byte;
struct rgb { byte red, green blue; } * colorPtr = bufPtr;
for (int i = 0; i < bufSize; i++, bufPtr++) {
byte gray = (unsigned char) (((float) bufPtr->red * 0.3f +
(float) bufPtr->green * 0.59f +
(float) bufPtr->blue * 0.11f)) / 3.0f * 255.0f + 0.5f);
bufPtr->red = bufPtr->green = bufPtr->blue = gray;
}
如果您不想编码,可以例如使用GIMP,加载图像并从颜色菜单中应用去饱和度。您可以为GIMP安装ufraw插件,以便在其中加载RAW格式的图像。如果要将整个颜色信息存储为8位(而不是每个颜色通道使用8位),GIMP中还有另一个选项可以降低颜色深度。