如何从图像中检测黑色和灰色

时间:2015-10-29 01:20:21

标签: python opencv image-processing colors image-segmentation

我正在试图找到一个程序来检测黑色的任何色调(以及一些轻微的灰色),但我目前很难找到一个好的上色调矢量(upper_hue变量),这将允许我提取大部分黑色色调没有提取其他颜色。它似乎适用于黑色鞋子或雨伞等图片,但是在亮度不同的道路照片上也存在问题。

我正在努力寻找一个良好的上色调范围,使该程序能够对抗这种情况,但是它有可能获得非黑色的颜色。

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

黑色和灰色值的上部色调矢量是多少?如果这不是问题,那么解决这个问题的好方法是什么?

代码:

table {
  border-collapse: collapse;
}
table,td {
  padding: 0;
}
img {
  display: inherit;
}

1 个答案:

答案 0 :(得分:1)

在hsv颜色空间中,这非常简单。

img = cv2.imread(img_path)
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
lower_gray = np.array([0, 5, 50], np.uint8)
upper_gray = np.array([360, 50, 255], np.uint8)
mask_gray = cv2.inRange(hsv, lower_gray, upper_gray)
img_res = cv2.bitwise_and(img, img, mask = mask_gray)

H是色调,因此灰色检测器需要所有H值(0-> 360°)。 S是饱和度(0-> 255)。灰度介于0到50之间。如果我们不想保留白色值,则可以取5作为最小值。 V是亮度值(0 =暗-> 255 =亮)。