我在看这个问题:

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/

10-13 00:32