机器学习:opencv--tracker跟踪器

import cv2

# 创建一个CSRT跟踪器实例
tracker = cv2.TrackerCSRT_create()

# 跟踪标志,默认为False
tracking = False

cap = cv2.VideoCapture(0)
while True:
    ret, frame = cap.read()
    if not ret:
        break

    # 检査是否有按键被按下,如果是'a'键:则设置跟踪标志为True:并选ROI
    if cv2.waitKey(100) == ord('a'):
        tracking = True
        # 让用户在当前帧中选择一个矩形区域作为要跟踪的对象
        roi = cv2.selectROI('Tracking', frame, showCrosshair=False)  # 是否显示十字准星
        # 初始化跟踪器,传入当前帧和选定的ROI
        tracker.init(frame, roi)

    # 如果跟踪标志为True,则更新跟踪器
    if tracking:
        success, box = tracker.update(frame)
        # 如果跟踪成功,获取对象的位置
        if success:
            x, y, w, h = [int(v) for v in box]  # 确保所有坐标都是整数
            # 在frame上绘制矩形框以显示跟踪结果
            cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)

    # 显示处理后的帧
    cv2.imshow('Tracking', frame)
    # 检查是否按下ESC键(ASCII码27),如果按下则退出循环
    if cv2.waitKey(100) == 27:
        break

# 释放摄像头赟源
cap.release()
# 关闭所有openCV创建的窗口
cv2.destroyAllWindows()

猜你喜欢

转载自blog.csdn.net/weixin_65047977/article/details/142930756