【问题标题】:OpenCV createCalibrateDebevec.process is giving me "dst is not a numpy array, neither a scalar"OpenCV createCalibrateDebevec.process 给我“dst 不是 numpy 数组,也不是标量”
【发布时间】:2016-03-23 11:16:37
【问题描述】:

我目前正在尝试使用 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 或“响应”不是一个 numpy 数组,而是检查“响应”的类型,它清楚地说是。

ipdb> type(response)
<type 'numpy.ndarray'>

【问题讨论】:

  • 你用的是什么版本的cv2?
  • >>> 导入 cv2 >>> cv2.__version__ '3.0.0'

标签: python c++ arrays opencv numpy


【解决方案1】:

你应该使用调用

calibrate.process(images, times, response)

response = calibrate.process(images, times)

而不是

calibrate.process(images, response, times)

因为pythonCalibrateDebevecprocess成员签名如下:

process(src, times[, dst]) -> dst

可以通过以下方式简单确定:

import inspect
print(inspect.getdoc(calibrate.process))

【讨论】:

  • 啊,是的。出于某种原因,我确信签名是 process(src, dst, times)。谢谢!
  • 我遇到了同样的 HDR 处理问题(尽管原因不同)。如果可以的话,如果你能看一下就好了:stackoverflow.com/questions/34433906/…
猜你喜欢
  • 2018-01-08
  • 2013-07-11
  • 1970-01-01
  • 2020-04-01
  • 2018-12-18
  • 1970-01-01
  • 2014-05-30
  • 1970-01-01
  • 2018-04-24
相关资源
最近更新 更多