opencv - 如何在opencv上计算直方图而不考虑图像上的所有黑色像素(由于 mask )

标签 opencv computer-vision

我正在尝试获取图像的HSV,LAB直方图以提取某些特征,但是如果直方图考虑到我遮盖的区域的黑色像素,实际上我无法从特征中获得任何准确的结果。我能克服这个问题吗,我们将为您提供任何帮助。
我正在使用python。
这是一个示例图像,这是我尝试使用的代码。 enter image description here

hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
hue = hsv_image[:,:,0].astype(float)
sat = hsv_image[:,:,1].astype(float)
val = hsv_image[:,:,2].astype(float)
hue[hue == 0] = np.nan
histr_lab = cv2.calcHist([hsv_image], [0], None, [255], [0, 255])
histr_lab1 = cv2.calcHist([hsv], [1], None, [255], [0, 255])
histr_lab2 = cv2.calcHist([hsv], [2], None, [255], [0, 255])

最佳答案

在应用直方图之前,尝试通过应用以下方法过滤掉黑色像素(val = 0):

hue = hue[numpy.where(val > 0,True,False)]
sat = sat[numpy.where(val > 0,True,False)]
val = val[numpy.where(val > 0,True,False)]
在您的情况下,计算直方图时请尝试:
cv2.calcHist(hsv_image[np.where(val > 0,True, False)], [1],None, [255], [0, 255])

关于opencv - 如何在opencv上计算直方图而不考虑图像上的所有黑色像素(由于 mask ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62875780/

相关文章:

c++ - 设计这个简单的 ReactNative AR 应用程序的最佳方法是什么?

opencv - 将array <System:Byte> ^转换为Mat

python - 从包含带有边框的表格的图像中提取表格结构

c++ - 如何使用 opencv 和 c++ 减去形状

numpy - 改进信号峰值分析的技巧。 (峰宽)

c++ - Opencv 链接 CMAKE 不工作 Ubuntu 16.04 Docker

c# - 亚像素精度的图像处理

algorithm - 测量图像中痕迹的平均厚度

machine-learning - 使用深度学习进行对象检测的数据增强

machine-learning - 卷积神经网络做出有偏差的预测