opencv物体目标追踪

opencv中总共有8种目标跟踪算法,分别是BOOSTING、MIL、KCF、TLD、MEDIANFLOW、GOTURN、CSRT和MOSSE。每种算法对opencv的版本各有要求,需要注意。
在这里插入图片描述
在这里插入图片描述

# -*- coding: utf-8 -*-
# @Time    : 18-12-19 下午8:08
# @Author  : xugaoxiang
# @Email   : xugx.ai@gmail.com
# @Website : https://xugaoxiang.com
# @File    : tracker.py
# @Software: PyCharm

import sys
import cv2
import click


@click.command()
@click.option('--video', help = 'input video')
@click.option('--algorithm', help = 'tracker algorithm, BOOSTING、MIL、KCF、TLD、MEDIANFLOW、GOTURN、CSRT、MOSSE')
def main(video, algorithm):
    '''

    :param video: 待处理的视频文件
    :param algorithm: 指定OpenCV中的跟踪算法
    :return:
    '''

    major_ver, minor_ver, subminor_ver = (cv2.__version__).split('.')

    # 根据opencv的不同版本,创建跟踪器
    if int(minor_ver) < 3:
        tracker = cv2.Tracker_create(algorithm)
    else:
        if algorithm == 'BOOSTING':
            tracker = cv2.TrackerBoosting_create()
        if algorithm == 'MIL':
            tracker = cv2.TrackerMIL_create()
        if algorithm == 'KCF':
            tracker = cv2.TrackerKCF_create()
        if algorithm == 'TLD':
            tracker = cv2.TrackerTLD_create()
        if algorithm == 'MEDIANFLOW':
            tracker = cv2.TrackerMedianFlow_create()
        if algorithm == 'GOTURN':
            tracker = cv2.TrackerGOTURN_create()
        if algorithm == "CSRT":
            tracker = cv2.TrackerCSRT_create()
        if algorithm == 'MOSSE':
            tracker = cv2.TrackerMOSSE_create()

    # 读取视频文件
    video_cap = cv2.VideoCapture(video)

    # 检查视频文件是否被正确打开
    if not video_cap.isOpened():
        print("Open video failed.")
        sys.exit()

    # 读取第一帧数据
    ok, frame = video_cap.read()
    if not ok:
        print('Read video file failed.')
        sys.exit()

    # 手动选择关注的区域
    bbox = cv2.selectROI(frame, False)

    #
    ok = tracker.init(frame, bbox)

    while True:
        # 读取下一帧数据
        ok, frame = video_cap.read()
        if not ok:
            break

        # 开始计时器
        timer = cv2.getTickCount()

        # 更新跟踪器
        ok, bbox = tracker.update(frame)

        # 计算fps
        fps = cv2.getTickFrequency() / (cv2.getTickCount() - timer)

        # 画出 bounding box
        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:
            # Tracking failure
            cv2.putText(frame, "Tracking failure detected", (100, 80), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 0, 255), 2)

        # 显示
        cv2.putText(frame, algorithm + " Tracker", (100, 20), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (50, 170, 50), 2)

        cv2.putText(frame, "FPS : " + str(int(fps)), (100, 50), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (50, 170, 50), 2)

        cv2.imshow("Tracking", frame)

        # 接收到q键,退出循环
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

if __name__ == '__main__':
    main()

然后执行脚步

python tracker.py --video liuxiang_22s.mp4 --algorithm CSRT

https://xugaoxiang.com/2019/12/10/opencv-object-tracking/

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: VC是Visual C++(可视化C++)的简写。它是一款由微软公司开发的面向对象的编程语言,VC开发环境中包含了许多微软提供的工具,例如对话框设计器、资源编辑器、集成编译器和链接器等。VC对于图形图像处理方面的应用十分强大,特别是在opencv物体追踪方面。 OpenCV是一个基于BSD许可(开放源代码)发行的跨平台计算机视觉和机器学习软件库。它由一系列的计算机视觉和机器学习算法库组成。利用 OpenCV,我们可以实现一些常用的计算机视觉应用,例如图像或视频的处理、特征的提取和匹配、目标检测与跟踪等等。其中物体追踪是十分实用和广泛使用的应用之一。 利用VC编程可以很容易的调用OpenCV的接口,从而实现物体追踪功能。通常来说,物体追踪包含两个步骤:目标检测和目标跟踪。目标检测用于寻找目标物体,例如在视频序列中寻找特定物体的位置,多采用特征提取和机器学习算法。然后在目标检测的基础上进行目标跟踪,即在不同帧之间跟踪目标的运动轨迹,常见的跟踪算法包括卡尔曼滤波算法、粒子滤波算法等。 可以使用VC+OpenCV进行物体追踪的应用开发,不仅实现了在图像和视频中实时定位和跟踪目标的功能,也为物体识别、自动驾驶、区域监控等提供了强大的技术支持。 ### 回答2: VC和OpenCV物体追踪是一种基于视觉的技术,可以实现实时跟踪目标对象的位置和运动轨迹。VC是Visual C++的简称,是一种编程语言和开发环境,可以集成OpenCV库进行图像处理和计算机视觉应用的开发。OpenCV是Open Source Computer Vision的缩写,是一款跨平台的计算机视觉库,提供了丰富的图像处理、分析和识别算法。 物体追踪是计算机视觉中的一个重要研究领域,是指在视频流中自动监测和跟踪目标物体,识别物体的运动,并输出目标物体的位置和轨迹。VC和OpenCV物体追踪主要包括目标检测、特征提取、跟踪算法和运动模型等步骤。其中,目标检测是对视频流中的每一帧图像进行图像分割和目标区域提取,特征提取是提取目标物体的颜色、纹理、边缘等特征信息,跟踪算法是基于目标物体的特征信息计算目标物体的位置和速度,运动模型是根据先前的目标位置和速度预测下一时刻目标物体的位置。 VC和OpenCV物体追踪在实际的应用中,可以用于自动驾驶、安防监控、人脸跟踪、AR游戏等领域,实现了对目标物体的精准跟踪和监测,为计算机视觉的发展提供了重要的技术支撑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值