【发布时间】:2018-07-13 16:46:49
【问题描述】:
我目前正在开发一个程序,该程序可以检测我的房间里是否有红色物体或是否有蓝色物体。我周围的其他地方不是白色就是黑色。我已尽量减少房间内光线的变化。
在给定特定色调范围的情况下,我已经成功地在对象周围创建了一个蒙版。我希望我的程序为我打印:
1) “红色”- 如果有红色物体
2) “蓝色”- 如果有蓝色物体
我不知道该怎么做。以下是我在蓝色对象周围创建蒙版的程序。我也给出了其他一些颜色的色调范围。这样你就可以试试了。
程序:
import cv2
import numpy as np
cam = cv2.VideoCapture(1)
while True:
_, frame = cam.read()
denoised = cv2.GaussianBlur(frame, (31, 31), 35)
hsv = cv2.cvtColor(denoised, cv2.COLOR_BGR2HSV)
lower_blue = np.array([110, 50, 50])
upper_blue = np.array([160, 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)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cam.release()
cv2.destroyAllWindows()
不同颜色的色调(我不确定红色的色调,因为它不适用于某些颜色 - 我尝试了 Stackoverflow 的一些解决方案):
lower_red = np.array([0, 100, 100])
upper_red = np.array([0, 255, 255])
lower_yellow = np.array([15, 210, 20])
upper_yellow = np.array([35, 255, 255])
lower_green = np.array([29, 86, 6])
upper_green = np.array([64, 255, 2555])
lower_orange = np.array([10, 100, 20])
upper_orange = np.array([20,255,255])
以下是一些您可以尝试的示例图片:
【问题讨论】:
标签: python-3.x opencv cv2 color-detection