用python写一个opencv调用摄像头追踪光源
时间: 2024-03-13 19:18:55 浏览: 17
以下是一个简单的Python脚本,使用OpenCV库调用摄像头追踪光源:
```python
import cv2
# 打开摄像头
cap = cv2.VideoCapture(0)
while True:
# 读取摄像头视频帧
ret, frame = cap.read()
# 如果读取失败,则退出循环
if not ret:
break
# 将帧转换为HSV颜色空间
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
# 设定要追踪的光源颜色范围
lower_range = (20, 100, 100)
upper_range = (30, 255, 255)
# 根据颜色范围创建掩膜
mask = cv2.inRange(hsv, lower_range, upper_range)
# 进行形态学操作以去除噪声
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (15, 15))
mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel)
# 在帧上找到掩膜中的轮廓
contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 如果找到了轮廓,则画出最大的轮廓
if contours:
max_contour = max(contours, key=cv2.contourArea)
(x, y), radius = cv2.minEnclosingCircle(max_contour)
if radius > 10:
cv2.circle(frame, (int(x), int(y)), int(radius), (0, 255, 255), 2)
# 显示帧
cv2.imshow('Tracking', frame)
# 按下'q'键退出循环
if cv2.waitKey(1) == ord('q'):
break
# 释放资源
cap.release()
cv2.destroyAllWindows()
```
运行这个脚本后,会打开你的摄像头并开始追踪光源。如果光源在摄像头中被检测到,它将在屏幕上用黄色圆圈标记出来。你可以通过按下'q'键来退出程序。