繁体   English   中英

如何找到 colors 颜色的“上”和“下”范围?

[英]How to find a colors “Upper” and “Lower” range of a color?

我刚刚开始学习使用 opencv 进行颜色过滤。 我已经了解了大部分基础知识,但被困在一件事上。

import cv2
import numpy as np

img = cv2.imread("Circles.png")

hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

lower_range = np.array([169,100,100])
upper_range = np.array([189,255,255])

mask = cv2.inRange(hsv, lower_range, upper_range)

cv2.imshow("Image", img)
cv2.imshow("Mask",mask)

cv2.waitKey(0)
cv2.destroyAllWindows()

在哪里可以找到要过滤的 colors 的范围?

谢谢

所以基本上,你要做的基本上是过滤掉一种颜色。 默认情况下,图像以蓝色、绿色和红色三个通道表示。 但是,使用这种表示模式,您无法轻松过滤 colors,因为这些值被分成三个通道。 这就是 HSV(色相、饱和度、值)表示模式发挥作用的地方。

hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)将 BGR 格式图像转换为 HSV 格式表示。 现在,您可以获得所需颜色的值,只需将 +-delta 值添加到 H 通道,您就可以相应地过滤颜色。

例如,如果要过滤绿色,则绿色的 BGR 表示将为 (0,255,0)。 首先,我们需要在 HSV 中找到等效的颜色表示,即 (60,255,255)。 我们可以相应地添加 [H-10, 100,100] 和 [H+10, 255, 255] 作为上限和下限。

您可以使用将任何 BGR 转换为相应的 HSV 值。

color_bgr=np.uint8([[[0,255,0]]])
color_hsv = cv2.cvtColor(color_bgr,cv2.COLOR_BGR2HSV)
print(color_hsv)

更多详情参考此链接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM