使用python和opencv实现视频对象跟踪的代码
时间: 2023-06-17 10:05:17 浏览: 129
lk.zip_opencv lk_python_光流图像_光流对特征点的跟踪_视频跟踪
以下是基于Python和OpenCV实现视频对象跟踪的示例代码:
```python
import cv2
# 读取视频文件
cap = cv2.VideoCapture('video.mp4')
# 创建跟踪器
tracker = cv2.TrackerCSRT_create()
# 获取第一帧图像
ret, frame = cap.read()
# 选择跟踪对象的初始位置
bbox = cv2.selectROI(frame, False)
# 初始化跟踪器
tracker.init(frame, bbox)
while True:
# 读取视频帧
ret, frame = cap.read()
if not ret:
break
# 更新跟踪器
success, bbox = tracker.update(frame)
# 如果跟踪成功,画出跟踪框
if success:
x, y, w, h = [int(i) for i in bbox]
cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
# 显示当前帧
cv2.imshow('Object Tracker', frame)
# 按下 q 键退出
if cv2.waitKey(1) == ord('q'):
break
# 释放资源
cap.release()
cv2.destroyAllWindows()
```
在这个示例代码中,我们使用 `cv2.VideoCapture()` 读取视频文件,并使用 `cv2.TrackerCSRT_create()` 创建跟踪器。
在进入循环之前,我们使用 `cv2.selectROI()` 在第一帧图像上手动选择跟踪对象的初始位置,并使用 `tracker.init()` 初始化跟踪器。
在循环中,我们使用 `tracker.update()` 更新跟踪器,并使用 `cv2.rectangle()` 在当前帧上画出跟踪框。
最后,我们使用 `cv2.imshow()` 显示当前帧,并使用 `cv2.waitKey()` 等待用户按下 q 键退出循环。在退出循环之后,我们释放资源并关闭窗口。
阅读全文