OpenCV中使用calcHist的模糊异常

时间:2012-01-11 16:14:10

标签: python opencv

尝试使用cv2.calcHist()

时,我遇到了以下含糊不清的错误
>>> img
array([ 1.,  2.,  3.,  4.,  5.])
>>> cv2.calcHist( [img], channels = [0], mask = np.ones(img.size), histSize = [6], ranges = [(0,6)])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
SystemError: error return without exception set

错误是如此通用,以至于我绝对无法知道可能出现的问题。您可以找到记录here的函数。我目前正在运行通过MacPorts安装的OpenCV v2.3.1。

谢谢!

1 个答案:

答案 0 :(得分:8)

我发现Python界面的在线文档有点稀疏。 我发现一个非常宝贵的资源是样本(OpenCV-2.3.x/samples/python2),您可以在其中找到Python界面中几乎所有函数的示例用法。

但是看一下文档:

  • mask参数必须是8位(mask.astype('uint8')
  • 输入img应为CV_8UCV_32F(因此img.astype('uint8')img.astype('float32')

通过查看python2个样本(camshift.pycolor_histogram.py):

  • ranges参数不需要是元组,只需要一个列表(尽管文档建议它应该是列表或数组数组......)

所以:

cv2.calcHist( [img.astype('float32')],                 # <-- convert to float32
              channels=[0], 
              mask=np.ones(img.size).astype('uint8'),  # <-- convert to uint8
              histSize=[6], 
              ranges=[0,6] )                           # <-- flat list