OpenCV 是一个强大的开源计算机视觉库,它提供了多种目标追踪算法。
在 OpenCV 中,我们可以使用不同的追踪器来实现目标追踪,比如 MIL (Multiple Instance Learning)、BOOSTING、TLD (Tracking, Learning, Detection) 等。
使用 OpenCV 进行目标追踪的基本步骤:
1.安装Opencv。
pip安装python的opencv包:pip install opencv-python
2.读取视频或摄像头流。
主要代码:
#使用摄像头
cap = cv2.VideoCapture(0)
 
# 或者读取视频文件
 cap = cv2.VideoCapture('video.mp4')3.选择追踪器。
OpenCV 提供了多种追踪器。例如,可以使用 TrackerMIL、TrackerBoosting、TrackerKCF 等。
这里以 TrackerMIL 为例:
tracker = cv2.TrackerMIL_create()
4.初始化追踪器。
在视频帧中选择一个对象作为追踪目标,并用鼠标选择区域。然后初始化追踪器。
# 读取第一帧
ret, frame = cap.read()
if not ret:
    print("Failed to read video")
    exit()
  # 使用鼠标选择区域(实际应用中通常需要用户交互)
bbox = cv2.selectROI(frame, False)  # 返回左上角和右下角的坐标 (x, y, w, h)
  # 初始化追踪器
ok = tracker.init(frame, bbox)5.追踪目标,并在视频中显示结果。
while True:
    ret, frame = cap.read()
    if not ret:
        break
    
    # 更新追踪器并获取新的位置框
    ok, bbox = tracker.update(frame)
    
    if ok:
        # 绘制追踪框
        p1 = (int(bbox[0]), int(bbox[1]))
        p2 = (int(bbox[0] + bbox[2]), int(bbox[1] + bbox[3]))
        cv2.rectangle(frame, p1, p2, (255,0,0), 2, 1)
    else:
        cv2.putText(frame, "Tracking failure detected", (100,80), cv2.FONT_HERSHEY_SIMPLEX, 0.75,(0,0,255),2)
    
    # 显示结果帧
    cv2.imshow("Tracking", frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break6.释放资源和关闭窗口。
cap.release()
cv2.destroyAllWindows()以上是使用Opencv的目标追踪基础流程。
本章节将基于某段测试录像,尝试实现深度学习检测框架加载+基于dlib与ssd追踪+多进程目标追踪,并对多进程效率提升进行对比。










