我目前正在尝试使用OpenCV的python包装器进行一些HDR处理。

import cv2
import numpy as np

img = cv2.imread("1.jpg")
img2 = cv2.imread("2.jpg")
img3 = cv2.imread("3.jpg")

images = [img, img2, img3]
times = [-2, 0, 2]

response = np.zeros(256)
import ipdb; ipdb.set_trace()
calibrate = cv2.createCalibrateDebevec()
calibrate.process(images, response, times)

ipdb> calibrate.process(images, response, times)
*** TypeError: dst is not a numpy array, neither a scalar

它说基于位置的代码中的dst或“response”不是numpy数组,而是检查“response”的类型,显然是这样。
ipdb> type(response)
<type 'numpy.ndarray'>

最佳答案

你应该使用电话

calibrate.process(images, times, response)

要么
response = calibrate.process(images, times)

代替
calibrate.process(images, response, times)

因为python CalibrateDebevecprocess成员签名如下:
process(src, times[, dst]) -> dst

可以使用以下方法简单确定:
import inspect
print(inspect.getdoc(calibrate.process))

关于python - OpenCV createCalibrateDebevec.process给了我 “dst is not a numpy array, neither a scalar”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34326939/

10-10 18:57