opencv红绿灯识别python
时间: 2023-08-29 16:11:24 浏览: 185
红绿灯识别是计算机视觉领域的一个经典应用,可以通过OpenCV库实现。下面是一个基本的红绿灯识别Python程序:
```python
import cv2
import numpy as np
# 读取图像
img = cv2.imread('image.jpg')
# 将图像转换为HSV颜色空间
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# 设定红色和绿色的阈值范围
lower_red = np.array([0, 100, 100])
upper_red = np.array([10, 255, 255])
lower_green = np.array([50, 100, 100])
upper_green = np.array([70, 255, 255])
# 分割红色和绿色区域
mask_red = cv2.inRange(hsv, lower_red, upper_red)
mask_green = cv2.inRange(hsv, lower_green, upper_green)
# 将红色和绿色区域进行融合
mask = cv2.bitwise_or(mask_red, mask_green)
# 进行形态学处理,去除噪点
kernel = np.ones((5,5),np.uint8)
mask = cv2.erode(mask,kernel,iterations = 1)
mask = cv2.dilate(mask,kernel,iterations = 1)
# 检测圆形区域
circles = cv2.HoughCircles(mask,cv2.HOUGH_GRADIENT,1,20,
param1=50,param2=30,minRadius=0,maxRadius=0)
# 如果检测到圆形区域,则说明是红绿灯
if circles is not None:
print("Red light detected!")
else:
print("Green light detected!")
```
上述程序的基本思路是将图像转换为HSV颜色空间,然后设定红色和绿色的阈值范围,分割出红色和绿色区域,融合后进行形态学处理,最后使用霍夫变换检测圆形区域,如果检测到则说明是红灯,否则是绿灯。需要注意的是,程序中的图像路径需要根据实际情况进行修改。
阅读全文