我正在尝试让程序检测任何黑色(和一些轻微的灰色),但目前在寻找一个好的上限色调向量(即upper_hue变量)方面遇到了困难,这将允许我提取大部分黑色色调而不提取其他颜色。它似乎可以很好地处理像黑鞋或雨伞之类的图片,但是在道路照片等亮度变化较大的情况下会出现问题。
我正在尝试找到一个良好的上限色调范围,使程序能够对此具有鲁棒性,但这可能会导致非黑色颜色的提取。
我正在尝试找到一个良好的上限色调范围,使程序能够对此具有鲁棒性,但这可能会导致非黑色颜色的提取。
如果黑色和灰色的上限色调向量是一个问题,那么解决这个问题的好方法是什么?
代码:
import cv2
import numpy as np
import imutils
def color_seg(choice):
if choice == 'blue':
lower_hue = np.array([100,30,30])
upper_hue = np.array([150,148,255])
elif choice == 'white':
lower_hue = np.array([0,0,0])
upper_hue = np.array([0,0,255])
elif choice == 'black':
lower_hue = np.array([0,0,0])
upper_hue = np.array([50,50,100])
return lower_hue, upper_hue
# Take each frame
frame = cv2.imread('images/black0.jpg')
#frame = cv2.imread('images/road_1.jpg')
frame = imutils.resize(frame, height = 300)
chosen_color = 'black'
# Convert BGR to HSV
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
# define range of a color in HSV
lower_hue, upper_hue = color_seg(chosen_color)
# Threshold the HSV image to get only blue colors
mask = cv2.inRange(hsv, lower_hue, upper_hue)
cv2.imshow('frame',frame)
cv2.imshow('mask',mask)
cv2.waitKey(0)