【发布时间】:2015-12-23 10:46:41
【问题描述】:
我正在尝试让一些与 HDR 相关的函数与 OpenCV-Python 一起使用:特别是我正在尝试重现 OpenCV C++ HDR tutorial。不幸的是,生成的 hdr 图像/数组完全是白色的(所有值都是 Inf)。这是MCVE。 1.jpg、2.jpg、3.jpg 均为 870 × 580 RGB(内部 RGB KODAK sRGB Display)JPG 图像,曝光时间分别为 1/3200、1/800 和 1/200。我现在用另外 2 个 JPG 图像集对此进行了测试,其中一个在 Wikimedia 上可用。
>>> import cv2
>>> import numpy as np
>>>
>>> img = cv2.imread("1.jpg")
>>> img2 = cv2.imread("2.jpg")
>>> img3 = cv2.imread("3.jpg")
>>>
>>> images = np.array([img, img2, img3])
>>> times = np.array([1.0/3200,1.0/800,1.0/200])
>>>
>>> merger = cv2.createMergeDebevec()
>>> hdr = merger.process(images, times)
>>> hdr
array([[[ inf, inf, inf],
[ inf, inf, inf],
[ inf, inf, inf],
...,
[ inf, inf, inf],
[ inf, inf, inf],
[ inf, inf, inf]],
[[ inf, inf, inf],
[ inf, inf, inf],
[ inf, inf, inf],
...,
[ inf, inf, inf],
[ inf, inf, inf],
[ inf, inf, inf]],
[[ inf, inf, inf],
[ inf, inf, inf],
[ inf, inf, inf],
...,
[ inf, inf, inf],
[ inf, inf, inf],
[ inf, inf, inf]],
...,
[[ inf, inf, inf],
[ inf, inf, inf],
[ inf, inf, inf],
...,
[ inf, inf, inf],
[ inf, inf, inf],
[ inf, inf, inf]],
[[ inf, inf, inf],
[ inf, inf, inf],
[ inf, inf, inf],
...,
[ inf, inf, inf],
[ inf, inf, inf],
[ inf, inf, inf]],
[[ inf, inf, inf],
[ inf, inf, inf],
[ inf, inf, inf],
...,
[ inf, inf, inf],
[ inf, inf, inf],
[ inf, inf, inf]]], dtype=float32)
需要注意的一个有趣的事情是“times”数组在merge.process调用之后被修改了
>>> times
array([-8.07090609, -6.68461173, -5.29831737])
我使用的是 OpenCV 版本:
>>> cv2.__version__
'3.0.0'
merge.process 调用的签名如下:
>>> import inspect
>>> inspect.getdoc(merger.process)
'process(src, times, response[, dst]) -> dst or process(src, times[, dst]) -> dst'
【问题讨论】:
-
您介意分享您的 1,2 和 3.jpg 吗?这是为了错误再现的目的。或者您已经尝试过使用其他 JPG,但产生了相同的结果?另外,我的 PyCharm 似乎找不到 cv2 版本 3
-
是的,我用两组不同的图像进行了尝试。如果我可以让它与任何一组图像一起工作,我会很满意。
标签: python opencv photography hdr