gpt4 book ai didi

opencv - 在linux上转换12位jpg的方法

转载 作者:行者123 更新时间:2023-12-02 17:38:14 24 4
gpt4 key购买 nike

我们在 linux 上使用 OpenCV 来读取和处理常规的 8 位 JPG。

我们现在正在接收来自特定硬件的 12 位 JPG。 OpenCV 无法读取这些,我尝试过的其他任何东西也无法读取。是否有用于 linux 的实用程序或库使我们能够处理这些?也许转换为 8 位格式?

最新的 libjpeg 支持 12 位 JPG 作为编译时选项。这意味着编写同时支持常规 8 位和 12 位 jpg 的软件并不容易。但我想知道是否有人已经解决了这个问题。

最佳答案

我对您提出的技术进行了一些改进。

首先,您可以简化流程,无需安装和依赖 ImageMagick 通过制作 djpeg发出 PPM文件,因为 OpenCV 无论如何都可以在没有任何库的情况下阅读它们。所以你的命令会变成:

djpeg > result.ppm < some12bitBadBoy.jpg

其次,如果你这样做,你实际上会得到一个 12/16 位 PPM文件,让您在流程中保留更多的色彩分辨率!
identify -verbose result.ppm

Image: a.ppm
Format: PPM (Portable pixmap format (color))
Mime type: image/x-portable-pixmap
Class: DirectClass
Geometry: 227x149+0+0
Units: Undefined
Type: TrueColor
Endianess: Undefined
Colorspace: sRGB
Depth: 12-bit <---
Channel depth:
Red: 12-bit <---
Green: 12-bit <---
Blue: 12-bit <---
Channel statistics:
Pixels: 33823
Red:
min: 514 (0.125519)
max: 4095 (1)
mean: 2350.62 (0.574022)
standard deviation: 1102.04 (0.269119)
kurtosis: -1.39076
skewness: 0.13609
entropy: 0.971255
Green:
min: 305 (0.0744811)
max: 4095 (1)
mean: 1453.69 (0.354991)
standard deviation: 852.147 (0.208095)
kurtosis: 2.42348
skewness: 1.77043
entropy: 0.918006
Blue:
min: 213 (0.0520147)
max: 4095 (1)
mean: 1309.16 (0.319698)
standard deviation: 890.453 (0.217449)
kurtosis: 2.74961
skewness: 1.92239
...
...

对于其他试图找到难以捉摸的 12 位 JPEG 的人,我最终找到了一个 here .

为了简化您的工作流程,进一步的建议可能是使用 inotify ( man page ) 来监 View 像存储区域上的文件系统事件。因此,每当有新的 JPEG 到达进行分析时,您都可以得到有效的通知,然后您可以自动检查是否为 12 位并生成相应的 PPM使用上述过程将 12 位 JPEG 文件移至磁盘上的其他保存区域,以备您需要重新引用时使用。

如果您使用 Mac,则相当于 fswatch可以使用 安装自制 .

关于opencv - 在linux上转换12位jpg的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47833604/

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