我想检查交通信号灯的状态,我正在尝试许多阈值以准确检测红色,但我无法弄清楚。 请帮我。 我的主要问题是红色交通信号灯的阴影会因日光以及时间和天气条件以及其他自然条件而改变。 因此,我想编写一个即使红色阴影也可以准确检测红色的程序。但是只有红色。
我正在尝试将其放入python opencv。我尝试了许多阈值,但无法获得准确的结果
def detect_status(img,h,w,Threshold = 0.01): “”“检测红色和黄色 :param img: :参数阈值: :返回: “”“
desired_dim = (w, h) # width, height
img = cv2.resize(np.array(img), desired_dim, interpolation=cv2.INTER_LINEAR)
img_hsv=cv2.cvtColor(img, cv2.COLOR_RGB2HSV)
# lower mask (0-10)
lower_red = np.array([0,70,50])
upper_red = np.array([10,255,255])
mask0 = cv2.inRange(img_hsv, lower_red, upper_red)
# upper mask (170-180)
lower_red = np.array([170,70,50])
upper_red = np.array([180,255,255])
mask1 = cv2.inRange(img_hsv, lower_red, upper_red)
# red pixels' mask
mask = mask0+mask1
# Compare the percentage of red values
rate = np.count_nonzero(mask) / (desired_dim[0] * desired_dim[1])
if rate > Threshold:
return True
else:
return False
我希望程序可以准确检测任何红色阴影。