OpenCV视觉分析之目标跟踪(7)目标跟踪器类TrackerVit的使用

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

VIT 跟踪器由于特殊的模型结构而变得更快且极其轻量级,模型文件大约为 767KB。模型下载链接:https://github.com/opencv/opencv_zoo/tree/main/models/object_tracking_vittrack 作者:PengyuLiu,邮箱:1872918507@qq.com

cv::TrackerVit 是 OpenCV 中的一个视觉跟踪器类,它是基于 ViT(Vision Transformer)架构的一种实现。ViT 是一种用于图像识别的深度学习模型,近年来在计算机视觉领域取得了显著的效果。

代码示例

cpp 复制代码
#include <iostream>
#include <opencv2/opencv.hpp>

int main()
{
    // 读取视频文件
    cv::VideoCapture cap( 0 );
    if ( !cap.isOpened() )
    {
        std::cout << "Error opening video file" << std::endl;
        return -1;
    }

    // 读取第一帧
    cv::Mat frame;
    cap >> frame;
    if ( frame.empty() )
    {
        std::cout << "Error reading first frame" << std::endl;
        return -1;
    }

    // 选择目标区域
    cv::Rect bbox = cv::selectROI( "Select ROI", frame, false, false );
    if ( bbox.width <= 0 || bbox.height <= 0 )
    {
        std::cout << "No ROI selected" << std::endl;
        return -1;
    }

    // 创建 TrackerVit 对象
    cv::Ptr< cv::Tracker > tracker = cv::TrackerVit::create();

    // 初始化跟踪器
    tracker->init( frame, bbox );
   

    // 跟踪目标
    while ( true )
    {
        cap >> frame;
        if ( frame.empty() )
        {
            break;
        }

        // 更新跟踪结果
        cv::Rect newBox;
        bool ok = tracker->update( frame, newBox );

        // 绘制边界框
        if ( ok )
        {
            cv::rectangle( frame, newBox, cv::Scalar( 0, 255, 0 ), 2, 1 );
        }
        else
        {
            cv::rectangle( frame, newBox, cv::Scalar( 0, 0, 255 ), 2, 1 );
        }

        // 显示结果
        cv::imshow( "Tracking", frame );
        if ( cv::waitKey( 1 ) >= 0 )
        {
            break;
        }
    }

    return 0;
}

运行结果

代码所需的onnx文件下载地址:
https://download.csdn.net/download/jndingxin/89938956

相关推荐
策知道7 小时前
依托政府工作报告准备省考【经验贴】
大数据·数据库·人工智能·搜索引擎·政务
工程师老罗8 小时前
Pytorch如何加载和读取VOC数据集用来做目标检测?
人工智能·pytorch·目标检测
测试_AI_一辰8 小时前
Agent & RAG 测试工程05:把 RAG 的检索过程跑清楚:chunk 是什么、怎么来的、怎么被命中的
开发语言·人工智能·功能测试·自动化·ai编程
Henry-SAP8 小时前
SAP(ERP) 组织结构业务视角解析
大数据·人工智能·sap·erp·sap pp
龙腾亚太8 小时前
航空零部件加工变形难题破解:数字孪生 + 深度学习的精度控制实战
人工智能·深度学习·数字孪生·ai工程师·ai证书·转型ai
Coding茶水间8 小时前
基于深度学习的输电电力设备检测系统演示与介绍(YOLOv12/v11/v8/v5模型+Pyqt5界面+训练代码+数据集)
开发语言·人工智能·深度学习·yolo·目标检测·机器学习
是Dream呀8 小时前
基于深度学习的人类活动识别模型研究:HAR-DeepConvLG的设计与应用
人工智能·深度学习
jkyy20148 小时前
健康座舱:健康有益赋能新能源汽车开启移动健康新场景
人工智能·物联网·汽车·健康医疗
冀博8 小时前
从零到一:我如何用 LangChain + 智谱 AI 搭建具备“记忆与手脚”的智能体
人工智能·langchain
AI周红伟8 小时前
周红伟:中国信息通信研究院院长余晓晖关于智算:《算力互联互通行动计划》和《关于深入实施“人工智能+”行动的意见》的意见
人工智能