轨迹捕捉编程可以通过以下步骤实现:
项目准备
安装Python中的OpenCV库:`pip install opencv-python`。
确保摄像头准备就绪。
摄像头初始化
使用OpenCV打开摄像头:`cap = cv2.VideoCapture(0)`。
初始化CSRT追踪器:`tracker = cv2.TrackerCSRT_create()`。
轨迹绘制
在视频帧中锁定选中的物体:`tracker.init(frame, boundingRect)`。
实时跟踪物体位置,并将其绘制为轨迹线:`cv2.line(frame, (x1, y1), (x2, y2), (0, 255, 0), 2)`。
限制路径长度,使旧的路径淡出,新的路径逐渐替代它。
轨迹渐变效果
在每条路径线上设置透明度,让轨迹尾巴随时间淡化,形成流畅的视觉效果。
代码实现
```python
import cv2
import numpy as np
import time
打开摄像头
cap = cv2.VideoCapture(0)
if not cap.isOpened():
print("Error: Could not open camera.")
exit()
初始化CSRT追踪器
tracker = cv2.TrackerCSRT_create()
while True:
ret, frame = cap.read()
if not ret:
break
更新追踪器
success, boundingRect = tracker.update(frame)
if success:
追踪成功,绘制轨迹
x, y, w, h = boundingRect
cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
cv2.circle(frame, (int(x + w / 2), int(y + h / 2)), 5, (0, 0, 255), -1)
else:
追踪失败,清除轨迹
cv2.rectangle(frame, (0, 0), (frame.shape, frame.shape), (0, 0, 0), -1)
显示结果
cv2.imshow('Tracking', frame)
按'q'退出循环
if cv2.waitKey(1) & 0xFF == ord('q'):
break
释放摄像头
cap.release()
cv2.destroyAllWindows()
```
这个示例代码展示了如何使用OpenCV的CSRT追踪器在视频帧中锁定一个选中的物体,并实时绘制其轨迹。通过限制路径长度和设置透明度,可以实现轨迹的渐变效果。你可以根据具体需求对这个基础代码进行扩展和优化。