首页 > 解决方案 > 尝试在 Python 中使用 calcHist 计算 3 通道颜色直方图时出现“断言失败”错误

问题描述

所以我有一个功能可以在实验室空间中创建一个 3 通道直方图。我使用 cv2.calcHist 来计算直方图。

这是我的功能:

def create_Lab_hist(img, bin_size=[2, 5, 5]):
    imgLab = cv2.cvtColor(img, cv2.COLOR_BGR2Lab)
    hist = cv2.calcHist([imgLab], [0, 1, 2], None, bin_size, [0, -127, -127, 100, 127, 127])
    histN = hist/np.sum(hist)
    histTensor = torch.from_numpy(histN)
    return histTensor

当我尝试用它运行代码时,它会出现以下错误:

Traceback (most recent call last):
  File "/Users/anatolyryabchenko/Desktop/Projects/PitchEye/colorCluster.py", line 160, in <module>
    histArray = create_hist_array(imgArray, hist_builder=create_Lab_hist)
  File "/Users/anatolyryabchenko/Desktop/Projects/PitchEye/colorCluster.py", line 121, in create_hist_array
    histTensor = hist_builder(img)
  File "/Users/anatolyryabchenko/Desktop/Projects/PitchEye/colorCluster.py", line 113, in create_Lab_hist
    hist = cv2.calcHist([imgLab], [0, 1, 2], None, bin_size, [0, -127, -127, 100, 127, 127])
cv2.error: OpenCV(4.5.1) /private/var/folders/nz/vv4_9tw56nv9k3tkvyszvwg80000gn/T/pip-req-build-p3unqtkr/opencv/modules/imgproc/src/histogram.cpp:202: error: (-215:Assertion failed) ranges[i] && ranges[i][0] < ranges[i][1] in function 'histPrepareImages'

其余的代码应该没问题,因为当我用类似的功能替换 create_Lab_hist 但对于一个通道时,一切正常。

我还看到 calcHist 有很多类似的问题,实际上这是合理的,因为错误消息根本不提供信息。最好把这个问题变成一个小中心,在这里给出与这个问题相关的所有答案

标签: pythonopencvimage-processingassertion

解决方案


推荐阅读