gpt4 book ai didi

c++ - 在 RAW 图像中提取 RGB channel 值的库或方法

转载 作者:行者123 更新时间:2023-11-30 03:21:33 28 4
gpt4 key购买 nike

我正在寻找针对不同目的进行图像比较的解决方案。为了能够进行分析,我需要访问每个像素 channel 值。例如:很多相机都支持的RAW格式。

*是否有一些开源库可以访问 channel ,或者是否可以将其直接提取为字节值?
*目前我正在使用位图图像阅读器(https://github.com/ArashPartow/bitmap),但每次将原始图像转换为 BMP 进行分析并不是一个好主意,我已经相关了repo added to github , 它是一种用 C++14 编写的库

请建议访问图像数据的最快方法,谢谢。

最佳答案

使用 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

或与 popen() 一起使用在 C/C++ 中写在 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,请替换 magickconvert , 并替换 magick identifyidentify .


或者,查看 NetPBM PPM格式(参见 P6 格式 here )并开发一些代码来读取它,然后将所有内容转换为 PPM使用 ImageMagick 格式化并阅读它,它会在开始时为您提供尺寸:

magick image.nef -depth 16 ppm:-
magick image.cr2 -depth 8 ppm:-

请注意,这正是 CImg 采用的策略.

关于c++ - 在 RAW 图像中提取 RGB channel 值的库或方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52044654/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com