通过摄像头读取并框选红色物体的python代码
时间: 2023-12-28 14:03:35 浏览: 25
可以使用OpenCV库来实现这个功能。下面是一个简单的示例代码:
```python
import cv2
cap = cv2.VideoCapture(0) # 打开摄像头,0代表默认摄像头
while True:
ret, frame = cap.read() # 读取一帧图像
if not ret:
break
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) # 转换颜色空间为HSV
lower_red = (0, 100, 100) # 红色的下限
upper_red = (10, 255, 255) # 红色的上限
mask = cv2.inRange(hsv, lower_red, upper_red) # 生成红色物体的二值掩模
contours, hierarchy = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) # 提取轮廓
if len(contours) > 0:
# 找到最大轮廓
max_contour = max(contours, key=cv2.contourArea)
x, y, w, h = cv2.boundingRect(max_contour) # 获取包围矩形的坐标和尺寸
cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 0, 255), 2) # 在原图上绘制包围矩形
cv2.imshow('frame', frame) # 显示原图
cv2.imshow('mask', mask) # 显示掩模
if cv2.waitKey(1) == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
```
这个代码会打开默认的摄像头,读取一帧图像,将颜色空间转换为HSV,生成一个红色物体的二值掩模,提取轮廓,找到最大轮廓并使用包围矩形框选红色物体。同时,它会在原图和掩模上显示出来,直到按下“q”键退出程序。