Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据不良雷电条件下的颜色检测,检测灯光是否亮起_Python_Image_Opencv_Image Processing - Fatal编程技术网

Python 根据不良雷电条件下的颜色检测,检测灯光是否亮起

Python 根据不良雷电条件下的颜色检测,检测灯光是否亮起,python,image,opencv,image-processing,Python,Image,Opencv,Image Processing,我想基于颜色检测检测交通灯是否亮起。问题是,由于太阳光对它的影响,当它关闭时似乎是打开的。目前,我正在python中使用opencv和hsv颜色模型应用标准颜色检测。下面是代码的片段 hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) mask = cv2.inRange(hsv, lower_1, upper_1) contours, hierarchy = cv2.findContours(mask, cv2.RETR_CCOMP, cv2.CH

我想基于颜色检测检测交通灯是否亮起。问题是,由于太阳光对它的影响,当它关闭时似乎是打开的。目前,我正在python中使用opencv和hsv颜色模型应用标准颜色检测。下面是代码的片段

hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)    
mask = cv2.inRange(hsv, lower_1, upper_1)
contours, hierarchy = cv2.findContours(mask, cv2.RETR_CCOMP, cv2.CHAIN_APPROX_SIMPLE)

for cnt in contours:
   cnt_area = cv2.contourArea(cnt)
   cnt_area = (cnt_area / (frame_width * frame_height)) * 100
   if cnt_area >= min_contour_area:
     color_detected = True

return color_detected
例如:

点燃

照亮


代码在理想光照条件下正常工作。第一个图像中的灯光应为黑色,第二个图像中的灯光应为黄色。我的想法是将相同的检测算法应用于各种光照条件下的交通灯?有没有一种方法可以校正亮度或添加一些图像处理步骤来实现此目的?

您可以尝试通过圆形检测对象。圆度值计算为(4*面积*pi)/(周长^2)。@AlexAlex感谢您的回答。交通灯的区域已经选定,因此问题不是检测它位于何处,而是我需要知道它是打开还是关闭,考虑到我所描述的。如果在交通灯关闭时对照片进行二值化,由于顶部的阴影,明亮部分将具有裁剪圆的形状。当交通灯亮时,没有阴影,明亮的部分是一个圆圈。@AlexAlex我现在明白了,我会试试看,然后我会告诉你它是否有效。谢谢您可以尝试通过圆形检测对象。圆度值计算为(4*面积*pi)/(周长^2)。@AlexAlex感谢您的回答。交通灯的区域已经选定,因此问题不是检测它位于何处,而是我需要知道它是打开还是关闭,考虑到我所描述的。如果在交通灯关闭时对照片进行二值化,由于顶部的阴影,明亮部分将具有裁剪圆的形状。当交通灯亮时,没有阴影,明亮的部分是一个圆圈。@AlexAlex我现在明白了,我会试试看,然后我会告诉你它是否有效。谢谢