尝试使用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。
谢谢!
答案 0 :(得分:8)
我发现Python界面的在线文档有点稀疏。
我发现一个非常宝贵的资源是样本(OpenCV-2.3.x/samples/python2
),您可以在其中找到Python界面中几乎所有函数的示例用法。
但是看一下文档:
mask
参数必须是8位(mask.astype('uint8')
)img
应为CV_8U
或CV_32F
(因此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