我在看这个问题:
How to detect blue color object using opencv
然而经过多次反复试验,我仍然无法弄清楚如何检测蓝色物体。
这是我的代码:
import cv2
import numpy as np
cam=cv2.VideoCapture(0)
n=0
while True:
print n
returnVal,frame=cam.read()
img=cv2.GaussianBlur(frame, (5,5), 0)
img=cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
blue_lower=np.array([150,150,0],np.uint8)
blue_upper=np.array([180,255,255],np.uint8)
blue=cv2.inRange(img,blue_lower,blue_upper)
cv2.imshow('img',blue)
n=n+1
key = cv2.waitKey(10) % 0x100
if key == 27: break #ESC
我可以通过设置以下几行来检测红色物体:
red_lower=np.array([0,150,0],np.uint8)
red_upper=np.array([10,255,255],np.uint8)
当我使用第一个代码在网络摄像头前放一张蓝色纸时,它只显示为黑色。
有人可以帮我将蓝色的 RGB 转换为 HSV 吗?
提前谢谢了,
最佳答案
蓝色在 HSV 中以 360 度中大约 240 度的色调表示。 OpenCV-HSV 中的色调范围是 0-180,以将值存储在 8 位中。因此,蓝色在 OpenCV-HSV 中表示为 240 / 2 = 120
周围的 H 值。
要正确检测蓝色,可以选择以下值:
blue_lower=np.array([100,150,0],np.uint8)
blue_upper=np.array([140,255,255],np.uint8)
关于python - OpenCV & Python -- 无法检测蓝色物体,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17878254/