gpt4 book ai didi

python - OpenCV-Python createMergeDebevec 返回一个 Inf 数组

转载 作者:太空宇宙 更新时间:2023-11-03 22:53:49 24 4
gpt4 key购买 nike

我正在尝试使用 OpenCV-Python 获取一些与 HDR 相关的功能:具体来说,我正在尝试重现 OpenCV C++ HDR tutorial .不幸的是,生成的 hdr 图像/阵列完全是白色的(所有值都是 Inf)。这是一个 MCVE . 1.jpg、2.jpg、3.jpg均为870∼∼∼580 RGB(Internal 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”数组在 merger.process 调用之后被修改

>>> times
array([-8.07090609, -6.68461173, -5.29831737])

我使用的是 OpenCV 版本:

>>> cv2.__version__
'3.0.0'

merger.process 调用具有如下签名:

>>> import inspect
>>> inspect.getdoc(merger.process)
'process(src, times, response[, dst]) -> dst or process(src, times[, dst]) -> dst'

最佳答案

不确定 Debevec 算法的工作原理,但我设法获得了您要求的工作示例。请注意图像(及其相应的 EV)的降序和第 5 行的乘数。尝试使用乘数,您会得到略有不同的结果。不确定发生了什么,但它似乎正在工作。给你:

EV+4.09.JPG enter image description here EV+1.18.JPG enter image description here EV-1.82.JPG enter image description here

import cv2
import numpy as np
images = [cv2.imread(x) for x in 'EV+4.09.JPG', 'EV+1.18.JPG', 'EV-1.82.JPG']
times = np.array([4.09, 1.18, -1.82])
times *= 1000.
merger = cv2.createMergeDebevec()
hdr = merger.process(images, times)
print hdr
cv2.imwrite('out.jpg', hdr)

OUT.JPG enter image description here

关于python - OpenCV-Python createMergeDebevec 返回一个 Inf 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34433906/

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