OpenCV中使用calcHist的模糊异常

duc*_*thd 3 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
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

mat*_*fee 9

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

但是查看文档:

  • 所述mask参数必须是8位(mask.astype('uint8'))
  • 输入img应该是CV_8UCV_32F(so img.astype('uint8')img.astype('float32'))

从查看python2样本(camshift.py,color_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
Run Code Online (Sandbox Code Playgroud)