用Python的OpenCV,读取摄像头画面,指定一个颜色,在画面里找到这个颜色的最大色块,画个框框出来,并输出中心点坐标,将该坐标写在画面上
时间: 2024-05-13 20:20:00 浏览: 267
好的,需要先安装OpenCV库。可以使用以下命令进行安装:
```
pip install opencv-python
```
然后,可以使用以下代码实现上述功能:
```python
import cv2
import numpy as np
# 指定颜色范围
lower_color = np.array([0, 100, 100])
upper_color = np.array([10, 255, 255])
# 打开摄像头
cap = cv2.VideoCapture(0)
while True:
# 读取摄像头画面
ret, frame = cap.read()
if not ret:
break
# 转换颜色空间
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
# 提取颜色区域
mask = cv2.inRange(hsv, lower_color, upper_color)
# 查找最大轮廓
contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
if len(contours) > 0:
# 找到最大轮廓
max_contour = max(contours, key=cv2.contourArea)
# 计算最大轮廓的最小外接矩形
rect = cv2.minAreaRect(max_contour)
box = cv2.boxPoints(rect).astype(np.int32)
# 画出最小外接矩形
cv2.drawContours(frame, [box], 0, (0, 0, 255), 2)
# 计算中心点坐标
center_x = int(rect[0][0])
center_y = int(rect[0][1])
# 在画面上写出中心点坐标
cv2.putText(frame, f"({center_x}, {center_y})", (center_x, center_y), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2)
# 显示画面
cv2.imshow("frame", frame)
# 按下q键退出循环
if cv2.waitKey(1) == ord('q'):
break
# 释放摄像头并关闭窗口
cap.release()
cv2.destroyAllWindows()
```
在运行代码之前,需要将指定颜色的`lower_color`和`upper_color`进行设定。在这里,我们设定的是红色范围(H值在0-10之间),可以根据需要进行调整。
阅读全文