我在尝试制作 HSV 图像的 3D 直方图时遇到了这个问题,并遇到了同样的错误。事实证明,OpenCV 文档在这里把我们引入歧途。这些文档是为 C++ API 编写的,因此只能用作 Python 的模糊指南cv2
API(尽管我发现这些文档有时也会对 C++ 产生误导)。
函数签名如下:
cv2.calcHist(images, channels, mask, histSize, ranges[, hist[, accumulate]]) -> hist
关键点是channels
, histSize
and ranges
参数应该是平面列表,而不是示例中的嵌套列表。尝试以下操作,假设i_lab
是一个三通道图像:
range_hist = [0, 100, -100, 100, -100, 100]
hist_1 = cv2.calcHist([i_lab], [0, 1, 2], None, [20, 20, 20], range_hist)
如需更完整的示例,请尝试这个代码清单来自opencv python 博客.