python opencv通过摄像头跟踪红色小球,输出红色小球坐标
时间: 2023-07-12 14:17:04 浏览: 113
text.zip_opencv_python_python opencv
好的,以下是Python OpenCV跟踪红色小球并输出其坐标的代码:
``` python
import cv2
import numpy as np
# 设置红色的HSV范围
lower_red = np.array([0, 100, 100])
upper_red = np.array([10, 255, 255])
# 初始化摄像头
cap = cv2.VideoCapture(0)
while True:
# 读取帧
ret, frame = cap.read()
# 转换颜色空间
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
# 根据颜色范围构建掩膜
mask = cv2.inRange(hsv, lower_red, upper_red)
# 腐蚀和膨胀操作,消除噪声
mask = cv2.erode(mask, None, iterations=2)
mask = cv2.dilate(mask, None, iterations=2)
# 查找红色小球的轮廓
contours, hierarchy = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 如果找到了轮廓
if len(contours) > 0:
# 找到面积最大的轮廓
c = max(contours, key=cv2.contourArea)
# 计算红色小球的中心坐标
M = cv2.moments(c)
center = (int(M["m10"] / M["m00"]), int(M["m01"] / M["m00"]))
# 画出红色小球的轮廓和中心点
cv2.drawContours(frame, [c], -1, (0, 255, 0), 2)
cv2.circle(frame, center, 5, (0, 0, 255), -1)
# 输出红色小球的坐标
print("Red ball coordinates: ", center)
# 显示视频帧
cv2.imshow("Tracking Red Ball", frame)
# 按'q'键退出程序
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 释放摄像头并关闭窗口
cap.release()
cv2.destroyAllWindows()
```
在这个程序中,我们首先通过设置HSV颜色范围来识别红色小球的掩膜。然后对掩膜进行腐蚀和膨胀操作,以消除噪声。接下来,我们查找掩膜中的轮廓,找到面积最大的轮廓,计算红色小球的中心坐标,并在视频帧中标记出来。最后,程序输出红色小球的坐标,并在窗口中显示视频帧。
阅读全文