【发布时间】:2019-02-12 06:52:13
【问题描述】:
我需要在实时视频中检测黑色物体。我在互联网上获得了用于检测蓝色物体的代码。所以我根据bgr颜色代码改变了上下hsv值(我不清楚如何将bgr转换为hsv),但它没有检测到视频中的黑色物体。使用蓝色检测的代码是:
import cv2
import numpy as np
cap = cv2.VideoCapture(0)
while(1):
_, frame = cap.read()
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
lower_red = np.array([110,50,50])
upper_red = np.array([130,255,255])
mask = cv2.inRange(hsv, lower_red, upper_red)
res = cv2.bitwise_and(frame,frame, mask= mask)
cv2.imshow('frame',frame)
cv2.imshow('mask',mask)
cv2.imshow('res',res)
k = cv2.waitKey(5) & 0xFF
if k == 27:
break
cv2.destroyAllWindows()
cap.release()
我用于黑色的代码是:`
import cv2
import numpy as np
cap = cv2.VideoCapture(0)
while(1):
_, frame = cap.read()
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
lower_red = np.array([0,0,0])
upper_red = np.array([0,0,0])
mask = cv2.inRange(hsv, lower_red, upper_red)
res = cv2.bitwise_and(frame,frame, mask= mask)
cv2.imshow('frame',frame)
cv2.imshow('mask',mask)
cv2.imshow('res',res)
k = cv2.waitKey(5) & 0xFF
if k == 27:
break
cv2.destroyAllWindows()
cap.release()
黑色的结果不显示任何内容。我认为问题出在 hsv 转换中,但不确定。并且在检测到的蓝色图像中根本不准确,它会导致噪声。如何实现黑色检测和降噪?
【问题讨论】:
-
阅读一下关于 HSV 的工作原理en.m.wikipedia.org/wiki/HSL_and_HSV 并意识到黑色将显示为低饱和度(因为它不是鲜艳的颜色)和低
value因为它不亮。然后改变你的范围,看在老天的份上,改变你的变量的名字,给未来的维护工程师一个机会。祝你好运!
标签: python opencv cv2 hsv color-detection