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.mzph.cn/news/883843.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为OD机试真题---狼羊过河

关于华为OD机试真题中的“狼羊过河”问题&#xff0c;实际上更准确地描述应该是“羊、狼、农夫过河”问题。这个问题是一个经典的逻辑问题&#xff0c;要求在满足特定条件下&#xff0c;利用一艘有限容量的船将羊和狼全部安全地运送到对岸。以下是对该问题的详细解析&#xff1…

【Linux系统编程】第三十九弹---探索信号处理的奥秘:阻塞信号与sigset_t的深入剖析及实战

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、信号处理 2、阻塞信号 2.1、信号其他相关常见概念 2.2、在内核中的表示 2.3、sigset_t 2.4、信号集操作函数 3、完整…

QNAP威联通NAS设置了仅允许列表内的计算机连接,但是忘记有效IP地址怎么访问

创作立场&#xff1a;原创不易&#xff0c;拒绝搬运~ hello 大家好&#xff0c;我是你们的老伙伴&#xff0c;稳重的大王~ 本期教程为大家介绍一个使用场景的故障解除办法&#xff0c;如果遇到类似问题&#xff0c;可以参考一下解题思路~ 如上图所示位置&#xff0c;不小心设…

LabVIEW非接触式模态参数识别系统开发

基于LabVIEW的模态参数识别系统采用非接触式声学方法&#xff0c;结合LabVIEW软件和高精度硬件&#xff0c;实现机械结构模态参数的快速准确识别。降低了模态分析技术门槛&#xff0c;提高测试效率和准确性。 项目背景与意义: 传统的模态分析方法&#xff0c;如锤击法&#x…

ssm011线上旅行信息管理系统(论文+源码)_kaic

毕业论文&#xff08;设计&#xff09; 题 目&#xff1a;线上旅行信息管理系统设计与实现 姓  名&#xff1a; 专  业&#xff1a; 班  级&#xff1a; …

【RAG实战】优化索引的四种高级方法,快点收藏起来!!

前言 Indexing&#xff08;索引&#xff09;是搭建任何RAG系统的第一步&#xff0c;也是至关重要的一步&#xff0c;良好的索引意味着合理的知识或信息分类&#xff0c;召回环节就会更加精准。在这篇文章中&#xff0c;围绕Indexing&#xff08;索引&#xff09;环节&#xff…

【火山引擎】文生图实践 | PYTHON

目录 1 准备工作 2 实践 1 准备工作 ① 服务开通 确保已开通需要访问的服务。可前往火山引擎控制台并开通相应服务。 ② 获取安全凭证 Access Key (访问密钥)

快速上手 Rust——环境配置与项目初始化

Rust 跨界&#xff1a;全面掌握跨平台应用开发 第一章&#xff1a;快速上手 Rust 1.1 环境配置与项目初始化 1.1.1 安装 Rust 和 Cargo 在开始学习 Rust 之前&#xff0c;首先需要安装 Rust 编程语言及其包管理工具 Cargo。Rust 的安装非常简单&#xff0c;使用官方的安装脚…

基于langchain框架的智能PDF问答(一)创建向量数据库

首先安装langchain,安装完之后就可以开始我们的步骤了 pip install langchain第一步 我们可以先创建一个Python文件&#xff0c;用于将PDF加载到我们本地的向量数据库中 一、读取文档 加载PDFX需要用到文本加载器,导入PyPDFLoader这个函数 #读取文档 from langchain.documen…

开源呼叫中心系统FreeIPCC:SIP 协议详解

SIP 协议详解大全 作者&#xff1a;开源呼叫中心系统FreeIPCC SIP&#xff08;Session Initiation Protocol&#xff0c;会话初始协议&#xff09;是由IETF&#xff08;Internet Engineering Task Force&#xff0c;因特网工程任务组&#xff09;制定的多媒体通信协议。它最早…

机器学习认知包

开源竞争&#xff1a; 开源竞争&#xff08;自己没有办法完全掌握技术的时候就开源掉&#xff0c;培养出更多的技术依赖&#xff0c;让更多的人完善你的技术&#xff0c;那么这不就是在砸罐子吗&#xff1f;一个行业里面你不去砸罐子&#xff0c;其他人就会砸罐子&#xff0c;你…

北京迅为iTOP-LS2K0500开发板快速使用编译环境虚拟机Ubuntu基础操作及设置

迅为iTOP-LS2K0500开发板 迅为iTOP-LS2K0500开发板采用龙芯LS2K0500处理器&#xff0c;基于龙芯自主指令系统&#xff08;LoongArch&#xff09;架构&#xff0c;片内集成64位LA264处理器核、32位DDR3控制器、2D GPU、DVO显示接口、两路PClE2.0、两路SATA2.0、四路USB2.0、一路…

浏览器HTTP缓存解读(HTTP Status:200 304)

为什么要有浏览器缓存&#xff1f; 浏览器缓存(Brower Caching)是浏览器对之前请求过的文件进行缓存&#xff0c;以便下一次访问时重复使用&#xff0c;节省带宽&#xff0c;提高访问速度&#xff0c;降低服务器压力 http缓存机制主要在http响应头中设定&#xff0c;响应头中…

(蓝桥杯C/C++)——常用库函数

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 一、 二分查找 1.二分查找的前提 2.binary_ search函数 3.lower_bound和upper_bound 二、排序 1.sort概念 2.sort的用法 3.自定义比较函数 三、全排列 1.next p…

Spring Boot⾃动配置

一、Spring Boot的自动配置原理 Spring Boot使用一种称为“约定优于配置”的方法&#xff0c;这意味着如果你按照预定的方式来安排你的代码和依赖项&#xff0c;Spring Boot可以自动配置你的应用程序。主要特点包括&#xff1a; 自动检测&#xff1a;Spring Boot在应用启动时…

C#实现word和pdf格式互转

1、word转pdf 使用nuget&#xff1a; Microsoft.Office.Interop.Word winform页面&#xff1a; 后端代码&#xff1a; //using Spire.Doc; //using Spire.Pdf; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using Sy…

LeetCode题练习与总结:将数据流变为多个不相交区间--352

一、题目描述 给你一个由非负整数 a1, a2, ..., an 组成的数据流输入&#xff0c;请你将到目前为止看到的数字总结为不相交的区间列表。 实现 SummaryRanges 类&#xff1a; SummaryRanges() 使用一个空数据流初始化对象。void addNum(int val) 向数据流中加入整数 val 。int…

iOS Swift5算法恢复——HMAC

demangle的时候看到了CryptoSwift&#xff0c;HMAC&#xff0c;于是写一个helloworld&#xff0c;用于对照。 sudo gem install cocoapods pod init pods文件&#xff0c;注意要标注静态链接&#xff1a; # Uncomment the next line to define a global platform for your p…

一些MATLAB到Python的转换指南

1. 矩阵和数组操作 MATLAB使用方括号[]来创建矩阵和数组。Python使用列表[]或NumPy库中的数组。 MATLAB: A [1 2 3; 4 5 6; 7 8 9];Python: import numpy as npA np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])2. 数学运算 MATLAB中很多内置函数可以直接用于矩阵。Python…

Diving into the HAL-----HAL_GPIO

1、怎么看待外设&#xff1a; 从总线连接的角度看&#xff0c;外设和Core、DMA通过总线交换数据&#xff0c;正所谓要想富先修路。要注意&#xff0c;这些总线中的每一个都连接到不同的时钟源&#xff0c;这些时钟源决定了连接到该总线的外设操作的最大速度。 从内存分配的角度…