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

OpenCV视觉分析之目标跟踪(4)目标跟踪类TrackerDaSiamRPN的使用

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

算法描述

cv::TrackerDaSiamRPN 是 OpenCV 中用于目标跟踪的一个类,它实现了 DaSiam RPN(Deformable Siamese Region Proposal Network)算法。DaSiam RPN 是一种基于深度学习的目标跟踪算法,常用于视频中的目标跟踪任务。

代码示例

假设你已经有了一个有效的 ONNX 模型文件 dasiamrpn_model.onnx。


#include <iostream>
#include <opencv2/opencv.hpp>

int main()
{
    // 读取视频文件
    cv::VideoCapture cap( 1 );
    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::Rect2d bbox = cv::selectROI( "Select ROI", frame, false, false );
    if ( bbox.width <= 0 || bbox.height <= 0 )
    {
        std::cout << "No ROI selected" << std::endl;
        return -1;
    }

    // 创建 TrackerDaSiamRPN 对象
    cv::Ptr< cv::Tracker > tracker = cv::TrackerDaSiamRPN::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;
}

运行结果

跟踪的是一个中性笔的笔头
在这里插入图片描述


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

相关文章:

  • 【ComfyUI】手动安装部署ComfyUI的运行环境
  • Qt/C++ 调用迅雷开放下载引擎(ThunderOpenSDK)下载数据资源
  • DBeaver如何导出insert的sql数据
  • HarmonyOS“一次开发,多端部署”
  • 前端自学资料(笔记八股)分享—CSS(4)
  • Qt元对象系统 —— 信号与槽
  • 电脑怎么设置开机启动项?Win11设置开机自动启动程序教程!
  • FastJson
  • 渲染集群服务器如何搭建
  • 微服务电商平台课程三:基础环境搭建
  • C语言中的位操作
  • Nginx配置基于端口的 Web 服务器
  • [面试题]ES6 Javascript
  • Diving into the HAL-----HAL_GPIO
  • Elasticsearch 向量搜索
  • Java学习笔记(十)
  • golang版本工具GVM 和包管理工具go mod原理讲解
  • 17 Docker容器存储架构:docker存储持久化-bind mount
  • 计算机视觉-Harris特征点检测实验报告
  • c++11新语法(上)
  • Python bs4 结合 Scrapy,进行数据爬取和处理
  • 利用游戏引擎的优势
  • windows 驱动实例分析系列: NDIS 6.0的Filter 驱动改造(四)
  • Educational Codeforces Round 171 (Rated for Div. 2)(A~D题题解)
  • ChatGPT、Python和OpenCV支持下的空天地遥感数据识别与计算——从0基础到15个案例实战
  • Ubuntu22.04环境搭建MQTT服务器