Python实现 多目标跟踪+画出轨迹 - OpenCV函数调用测试

本文介绍如何使用Python和OpenCV库实现多目标跟踪,并在视频中绘制目标轨迹。文章提供了完整的代码示例,支持本地视频和摄像头输入,包括目标框选、标签和轨迹保存等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       在我之前的博客,”C++实现 多目标跟踪+画出轨迹 - OpenCV函数调用测试“ 中用C++实现了多目标跟踪并画出轨迹,贴上标签的功能,现在将他移植到python上面去。文章末贴上我的代码。

 

环境:pycharm professional 2019.1 + opencv-python 4.2.0.32 + opencv-contrib-python 4.2.0.32 + python 3.7.0 + anaconda

 

       之前只是学过一小段时间python,但是没怎么搞过python,这次差不多是重新来了,因此遇到了很多小儿科问题,比如:

  • 我的pycharm过期了......找到了永久破解的办法懒得弄了,找了个激活码。
  • tracker = cv2.TrackerBoosting_create() 等这些create的方法上出现提示,cannot find reference 'TrackingBoosting_create' in '__ini__.py' ,本以为这个是报错,百度了才知道这并不是报错,只是在ini.py中看不到罢了,好像是因为安装时候的原因?懒得继续弄了,就继续了。
  • python的opencv有些方法跟C++的不一样,最直观的区别就是video >> frame,在python就不这么用。
  • 慢慢去熟练python吧......

       别的没啥可解释的了,要看详细解释,去看我C++实现的博客吧。

包含功能:
       1. 按帧选取视频追踪起始点
       2. 鼠标框选目标
       3. 支持本地视频和摄像头两种方式
       4. 给每个目标贴上标签
       5. 画出轨迹

       6. 将有轨迹的视频和没有轨迹的视频保存到本地

最新完整代码:

from __future__ import print_function
import sys
import cv2
from random import randint
import time
import os

trackerTypes = ['BOOSTING', 'MIL', 'KCF', 'TLD', 'MEDIANFLOW', 'MOSSE', 'CSRT']


def createTrackerByName(trackerType):
    # Create a tracker based on tracker name
    if trackerType == trackerTypes[0]:
        tracker = cv2.TrackerBoosting_create()
    elif trackerType == trackerTypes[1]:
        tracker = cv2.TrackerMIL_create()
    elif trackerType == trackerTypes[2]:
        tracker = cv2.TrackerKCF_create()
    elif trackerType == trackerTypes[3]:
        tracker = cv2.TrackerTLD_create()
    elif trackerType == trackerTypes[4]:
        tracker = cv2.TrackerMedianFlow_create()
    elif trackerType == trackerTypes[5]:
        tracker = cv2.TrackerMOSSE_create()
    elif trackerType == trackerTypes[6]:
        tracker = cv2.TrackerCSRT_create()
    else:
        tracker = None
        print('Incorrect tracker name')
        print('Available trackers are:')
        for t in trackerTypes:
            print(t)

    return tracker


No = 0
if __name__ == '__main__':

    vecPoints = []

    while True:

        vecPoints.clear()

        while True:
            print('\n------------------------------------------------------------------\n'
                  '\n>> 可测试算法有  BOOSTING  MIL  KCF  TLD  MEDIANFLOW  MOSSE  CSRT'
                  '\n>> 请输入要测试的算法并按回车,如需退出请输入exit。')

            tType = input('>> ')

            if tType == 'exit':
                sys.exit(0)
            if tType == 'BOOSTING':
                print('>> 选择BOOSTING成功!')
                break
            elif tType == 'MIL':
                print('>> 选择MIL成功!')
                break
            elif tType == 'KCF':
                print('>> 选择KCF成功!')
                break
            elif tType == 'TLD':
                
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值