【问题标题】:Visualization of raw RGB image data with 24bits using opencv使用opencv可视化24位原始RGB图像数据
【发布时间】:2017-12-06 05:13:33
【问题描述】:

我想使用 OpenCV 处理原始图像。据我所知,无法使用 OpenCV 打开原始图像。 我转发了instaction

我的原始图片是 24bits 的 RGB(前 3 个字节表示同一像素中红绿蓝的颜色值)。

我的目标是能够使用 OpenCV 函数处理我的图片。

我应该如何重塑我的原始数据? 根据我在网上看到的,我想到了 (3, 1280, 1080)

我如何将这三张图片可视化为“正常”图片?我怎么能分开想象他三张照片?

作为一个小例子,我尝试重塑我使用读取的字节:

a = np.arange(18).reshape(3,2,3, order='F')

a: [[[ 0  6 12]
     [ 3  9 15]]
    [[ 1  7 13]
     [ 4 10 16]]
    [[ 2  8 14]
     [ 5 11 17]]]

【问题讨论】:

  • 让你的图片数据更准确。
  • 您的文件的确切大小(以字节为单位)是多少?文件的高度(以像素为单位)和宽度(以像素为单位)是多少?
  • @MarkSetchell 大小为 1280 x 1080 x 3(RGB 为 3)-> 4147200 字节(无标题)
  • 你的图片是什么格式的?它是来自相机的原始数据吗?如果是什么类型的相机?

标签: python numpy opencv


【解决方案1】:

OpenCV 能够读取 NetPBMWikipedia entry for NetPBM) 格式的图像,请参阅链接页面上的 PPM Example

所以你可以像这样在图像前面放一个 P6(即二进制 RGB)NetPBM 标头,然后 OpenCV 可以打开它:

{ printf "P6\n1280 1080\n255\n" ; cat YourImage.raw ; } > result.ppm

如果你不幸在 Windows 上,你可以这样做:

echo "P6"          > header.txt
echo "1280 1080"  >> header.txt
echo "255"        >> header.txt
copy /b header.txt+YourImage.raw result.ppm

或者,如果您在 Linux 上,您可能有 ImageMagick,它适用于 ma​​cOSWindows强>太。因此,在终端的命令行中,您可以将图像转换为 PNG,例如 tis:

convert -depth 8 -size 1280x1080 rgb:YourImage.raw result.png

然后,您可以将各个通道分开并将它们彼此并排添加

convert result.png -separate +append 3channels.png   # or use `-append` instead

或者,使用自动级别对比度:

convert result.png -separate +append -auto-level 3channels.png

【讨论】:

    猜你喜欢
    • 2013-06-23
    • 1970-01-01
    • 1970-01-01
    • 2011-11-22
    • 2018-03-17
    • 2019-03-04
    • 1970-01-01
    • 2014-10-29
    • 1970-01-01
    相关资源
    最近更新 更多