python opencv 物体跟踪
时间: 2023-07-24 11:14:56 浏览: 130
python opencv 检测移动物体并截图保存实例
在 Python 中使用 OpenCV 实现物体跟踪,你可以通过选择合适的跟踪算法和函数来实现。下面是一个使用 OpenCV 中的 CSRT 跟踪器进行物体跟踪的示例代码:
```python
import cv2
# 创建一个跟踪器对象
tracker = cv2.TrackerCSRT_create()
# 读取视频或打开摄像头
video = cv2.VideoCapture("input.mp4")
if not video.isOpened():
print("无法打开视频文件")
exit()
# 读取第一帧并选择目标区域
ret, frame = video.read()
if not ret:
print("无法读取视频帧")
exit()
bbox = cv2.selectROI("Object Tracking", frame, False)
tracker.init(frame, bbox)
while True:
ret, frame = video.read()
if not ret:
break
# 跟踪目标并获取边界框
success, bbox = tracker.update(frame)
# 根据跟踪结果在图像上绘制边界框
if success:
(x, y, w, h) = [int(v) for v in bbox]
cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
else:
cv2.putText(frame, "Tracking failure detected", (100, 80), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 0, 255), 2)
# 显示跟踪结果
cv2.imshow("Object Tracking", frame)
# 按下 ESC 键退出循环
if cv2.waitKey(1) == 27:
break
# 释放视频或关闭摄像头
video.release()
# 关闭窗口
cv2.destroyAllWindows()
```
在上述代码中,我们首先创建一个 CSRT 跟踪器对象。然后,我们使用 `cv2.VideoCapture` 打开视频文件或摄像头,并读取第一帧图像。通过使用 `cv2.selectROI` 函数选择目标区域,并使用 `tracker.init` 初始化跟踪器。接下来,我们进入一个循环中,在每一帧图像上进行目标跟踪,并根据跟踪结果绘制边界框。最后,我们使用 `cv2.imshow` 显示跟踪结果,并通过按下 ESC 键退出循环。
请注意,这只是一个基本的示例代码,你可以根据实际需求进行修改和扩展。还有其他的跟踪算法可供选择,如 KCF、MOSSE 等。你可以尝试不同的算法并调整参数以获得更好的跟踪效果。
阅读全文