我正在寻找一种解决方案,用于不同目的的图像比较。 为了使分析成为可能,我需要访问每个像素通道值。 例如:许多相机都支持的RAW格式。
*
是否有一些开放源代码库可以访问频道,
还是可以直接将其提取为字节值?
*
目前,我正在使用bitmap_image阅读器(Plugin/Preset files are not allowed to export objects),但不是每次都将原始图像转换为BMP进行分析的好主意,我已经将https://github.com/ArashPartow/bitmap与这种用C ++ 14编写的库相关联
谢谢,请提出访问图像数据的最快方法。
答案 0 :(得分:2)
使用 ImageMagick ,它已安装在大多数Linux发行版中,并且可用于macOS和Windows。
在命令行上:
# Convert NEF raw file to 16-bit RGB data
magick image.nef -depth 16 rgb:image.bin
# Convert CR2 raw file to 8-bit RGB data
magick image.cr2 -depth 8 rgb:image.bin
或在C / C ++中将其与popen()
一起使用,并将其写在stdout
上:
magick image.dng -depth 16 rgb:-
,然后用C / C ++阅读。
如果您想在阅读前确定图像的尺寸:
magick identify temp.png
temp.png PNG 640x480 640x480+0+0 8-bit Gray 2c 12348B 0.000u 0:00.009
如果使用版本6,则将magick
替换为convert
,并将magick identify
替换为identify
。
或者,查看NetPBM PPM
格式(请参阅P6
格式here)
并开发一些代码来阅读它,然后只需使用 ImageMagick 将所有内容转换为PPM
格式并阅读,即可在开始时获得尺寸:
magick image.nef -depth 16 ppm:-
magick image.cr2 -depth 8 ppm:-
请注意,这正是CImg采用的策略。