【发布时间】:2013-07-26 09:53:31
【问题描述】:
我在看这个问题:
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 吗?
非常感谢,
【问题讨论】:
-
也许你的蓝纸色相更小或饱和度更低。您是否尝试过增大 h=150 和 s = 150 以下的范围?
-
@w.m 与直觉相反,以下值似乎有效:
blue_lower=np.array([100,150,0],np.uint8)blue_upper=np.array([120,255,255],np.uint8)。为什么蓝色不在150到180之间??? -
我一直在玩弄你的代码,它似乎没有按照你认为的方式存储颜色值(或者我认为它会如何......)
-
我会说它几乎肯定与反转的 RGB 字节有关......如果你交换 R&B,它相当于反转色调空间。
标签: python opencv image-processing