Opencv Python开放dng格式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Opencv Python开放dng格式相关的知识,希望对你有一定的参考价值。

我无法弄清楚如何在opencv中打开dng文件。该文件是在使用Samsung Galaxy S7的专业版选项时创建的。使用这些选项时创建的图像是一个dng文件以及一个大小为3024 x 4032的jpg(我相信这也是dng文件的尺寸)。

我尝试使用here的答案(除了3种颜色而不是灰度),如下所示:

import numpy as np
fd = open("image.dng", 'rb')
rows = 4032
cols = 3024
colors = 3
f = np.fromfile(fd, dtype=np.uint8,count=rows*cols*colors)
im = f.reshape((rows, cols,colors)) #notice row, column format
fd.close()

但是,我收到以下错误:

 cannot reshape array of size 24411648 into shape (4032,3024,3)

任何帮助,将不胜感激

答案

据我所知,可以压缩DNG文件(即使它是无损格式),因此您需要先解码您的dng图像。 https://www.libraw.org/有能力做到这一点。

该库有python包装器(https://pypi.python.org/pypi/rawpy

import rawpy
import imageio

path = 'image.dng'
with rawpy.imread(path) as raw:
    rgb = raw.postprocess()

以上是关于Opencv Python开放dng格式的主要内容,如果未能解决你的问题,请参考以下文章

dng格式的图片转png

iOS:PHAsset 和检测 DNG RAW 格式

在 Python 多处理进程中运行较慢的 OpenCV 代码片段

纯RAW数据转换为DNG格式

纯RAW数据转换为DNG格式

用opencv的dnn模块调onnx模型文件