OpenCV-在生成色调直方图时忽略像素

OpenCV- ignoring pixels when generating a hue histogram

我在 Python 中使用 OpenCV 中的 calcHist() 函数为 HSV 图像生成色调直方图但是我希望该函数能够忽略具有 ~0 的像素% 或 ~100% 亮度(分别为黑色和白色)或 ~0% 饱和度(灰色)。有任何想法吗?提前致谢。

calcHist 函数接受一个 mask 参数。您可以使用您提到的此属性创建一个掩码并将其传递给该函数。我建议你创建一些分析像素的东西......但一个简单的方法是:

h,s,v = cv2.split(img)
mask = (v == 0) + (v == 100) + (s == 0)
mask = numpy.logical_not(mask)

然后你就可以在函数中使用你的掩码矩阵了。它会忽略具有错误值的像素。我在 c++ 中使用过它,所以我不确定 false 值是否有效,或者你是否需要像 c++ 版本中的整数......在最坏的情况下,只需添加另一行 mask *= 1 就可以了。

希望对您有所帮助。