当前位置: 首页 > article >正文

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 是一种用于图像识别的深度学习模型,近年来在计算机视觉领域取得了显著的效果。

代码示例


#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


http://www.kler.cn/a/373036.html

相关文章:

  • DB-GPT系列(一):DB-GPT能帮你做什么?
  • 输出特殊图案,请在c环境中运行
  • Mac OS 搭建MySQL开发环境
  • 理解ADC:为什么量化噪声也会产生谐波?附带介绍 Dither(抖动)
  • 雷鸟Air 3 AR眼镜发布:轻量设计,高性价比背后隐忧重重
  • CF1152F2 Neko Rules the Catniverse (Large Version) 题解(插入类dp,状压,矩阵乘法,dp技巧)
  • VueRouter引入步骤
  • QT——记事本项目
  • QT 实现自定义开机加载动画一
  • 网络准入控制
  • QNAP威联通NAS第三方动态域名解析之docker部署DDNS GO
  • CPU算法分析LiteAIServer视频智能分析平台噪声检测功能在视频监控中的应用与优势
  • 图像处理 -- 白平衡处理简介
  • 企业物流管理数据仓库建设的全面指南
  • 在 Ubuntu 22.04 LTS 上安装 NVM (Node Version Manager) 管理和切换不同版本的 Node.js npm
  • 聚焦汽车智能化与电动化︱AUTO TECH 2025 华南展,以展带会,已全面启动,与您相约11月广州!
  • Linux 服务器中完整导出MySQL的某个库
  • PHP + Windows小皮面板 + VScode 安装教程
  • 【Linux】安装并配置 Microsoft SQL Server 数据库(Ubuntu 22.04)
  • commitlint+lint-staged+husky
  • 在线UI设计工具:创意与效率的结合
  • sheng的学习笔记-AI基础-激活函数
  • 大模型流水线并行和量化学习资料
  • 第12次CCF CSP认证真题解
  • iOS MPNowPlayingInfoCenter 通知栏、锁屏 显示当前播放的媒体信息
  • git修改用户名与查看git的账号与密码