给我一个求视频里物体几何中心的opencv代码
时间: 2024-06-09 11:07:16 浏览: 120
以下是一个简单的 OpenCV 代码示例,用于在视频中检测物体并计算其几何中心:
```
import cv2
import numpy as np
cap = cv2.VideoCapture(0)
while True:
_, frame = cap.read()
# 灰度化和高斯模糊
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
gray = cv2.GaussianBlur(gray, (5, 5), 0)
# 边缘检测
edges = cv2.Canny(gray, 100, 200)
# 轮廓检测
contours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 如果检测到轮廓
if len(contours) > 0:
# 找到最大轮廓
max_contour = max(contours, key=cv2.contourArea)
# 计算轮廓的几何中心
M = cv2.moments(max_contour)
cx = int(M['m10'] / M['m00'])
cy = int(M['m01'] / M['m00'])
# 在图像上绘制几何中心
cv2.circle(frame, (cx, cy), 5, (0, 0, 255), -1)
# 显示图像
cv2.imshow('frame', frame)
# 按下 Esc 键退出循环
if cv2.waitKey(1) == 27:
break
cap.release()
cv2.destroyAllWindows()
```
在此示例中,我们使用摄像头捕获视频并在每个帧上执行以下操作:
1. 将彩色图像转换为灰度图像并对其进行高斯模糊。
2. 使用 Canny 边缘检测算法检测图像中的边缘。
3. 使用 `findContours` 函数查找图像中的轮廓。
4. 如果检测到轮廓,则找到最大轮廓并计算其几何中心。
5. 将几何中心绘制为红色圆圈。
6. 在窗口中显示图像,按下 Esc 键退出循环。
请注意,该示例仅处理单个物体。如果您需要处理多个物体,则需要使用更复杂的算法。