OpenCV视觉分析之目标跟踪(6)轻量级目标跟踪器类TrackerNano的使用

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

算法描述

Nano 跟踪器是一个超轻量级的基于深度神经网络(DNN)的通用目标跟踪器。

由于特殊的模型结构,Nano 跟踪器速度更快且极其轻量级,整个模型大小约为 1.9 MB。Nano 跟踪器需要两个模型:一个用于特征提取(骨干网络),另一个用于定位(颈头网络)。模型下载链接:https://github.com/HonglinChu/SiamTrackers/tree/master/NanoTrack/models/nanotrackv2 原始仓库在这里:https://github.com/HonglinChu/NanoTrack 作者:HongLinChu,1628464345@qq.com

cv::TrackerNano 是 OpenCV 中的一个轻量级目标跟踪器,主要用于实时应用,尤其是在计算资源有限的情况下。cv::TrackerNano 的设计目的是为了提供一个简单且高效的跟踪解决方案,适用于对性能要求较高的场景。

特点

  • 轻量级:占用较少的计算资源,适用于嵌入式设备或移动平台。
  • 实时性能:能够实现实时跟踪,适合于需要高速处理的应用。
  • 易于使用:API 简单易用,便于快速集成。

使用方法

  • 创建 cv::TrackerNano 对象:
    • 使用 cv::TrackerNano::create() 创建一个 cv::Tracker 指针对象。
  • 初始化跟踪器:
    • 使用 init 方法初始化跟踪器,并提供初始帧和目标区域。
  • 更新跟踪器:
    • 使用 update 方法在后续帧中更新跟踪结果。

代码示例


#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::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;}// 创建 TrackerNano 对象cv::Ptr< cv::Tracker > tracker = cv::TrackerNano::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/diannao/58564.shtml

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

相关文章

【新人系列】Python 入门(六):基础内容 - 上

✍ 个人博客&#xff1a;https://blog.csdn.net/Newin2020?typeblog &#x1f4dd; 专栏地址&#xff1a;https://blog.csdn.net/newin2020/category_12801353.html &#x1f4e3; 专栏定位&#xff1a;为 0 基础刚入门 Python 的小伙伴提供详细的讲解&#xff0c;也欢迎大佬们…

LuaJIT源码分析(五)词法分析

LuaJIT源码分析&#xff08;五&#xff09;词法分析 lua虽然是脚本语言&#xff0c;但在执行时&#xff0c;还是先将脚本编译成字节码&#xff0c;然后再由虚拟机解释执行。在编译脚本时&#xff0c;首先需要对源代码进行词法分析&#xff0c;把源代码分解为token流。lua的toke…

Django+Vue全栈开发旅游网项目景点详情

一、VueRouter实现多个页面 VueRouter引入步骤&#xff1a; 1、了解Vue.js中的路由管理 2、掌握VueRouter的安装和配置 3、掌握在Vue.js中使用VueRouter 什么是路由 路由&#xff08;Routing&#xff09;是指在网络中&#xff0c;将数据包&#xff08;packet&#xff09;从…

零跑汽车嵌入式面试题汇总及参考答案

C++ 的三大特性是什么? C++ 的三大特性分别是封装、继承和多态。 封装 概念:封装是把数据和操作数据的函数绑定在一起,对数据的访问进行限制。通过将数据成员声明为私有或保护,只允许通过公共的成员函数来访问和修改数据,从而隐藏了类的内部实现细节。这有助于提高代码的安…

WPF+MVVM案例实战(七)- 系统初始化界面字体描边效果实现

文章目录 1、案例效果展示2、项目准备3、功能实现1、资源获取2、界面代码3、后台代码4 源代码获取1、案例效果展示 2、项目准备 打开项目 Wpf_Examples,新建系统初始化界面 WelcomeWindow.xmal,如下所示: 3、功能实现 1、资源获取 案例中使用的CSDN文字为路径文字,从字体…

crc16 with word byte--查表法

#1, BYTE CRC 参考&#xff1a; https://blog.csdn.net/m0_37697335/article/details/113267780?ops_request_misc%257B%2522request%255Fid%2522%253A%2522F1451286-1B97-44AA-A5FC-386045B4939B%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&reques…

开源Verilog EDA工具--iverilog+GTKWave

开源Verilog EDA工具--iverilogGTKWave 1 Linux下环境安装及编译2 bash脚本 iverilogvvpgtkwave的开源EDA工具&#xff0c;其中vpp已经包含在iverilog中&#xff1b;并且在Windows或者Linux下都有对应的版本&#xff1b; iverilog:用于编译verilog和vhdl文件&#xff0c;进行语…

MFC工控项目实例二十七添加产品参数

承接专栏《MFC工控项目实例二十六创建数据库》 在型号参数界面添加三个参数试验时间、最小值、最大值。变量为double m_edit_time; double m_edit_min; double m_edit_max; 1、在SEAL_PRESSURE.h中添加代码 class CProductPara { public:union{struct{...double m_edit_min;…

【02】ZooKeeper经典应用场景实战一

1、ZooKeeper Java客户端实战 ZooKeeper应用的开发主要通过Java客户端API去连接和操作ZooKeeper集群。可供选择的Java客户端API有&#xff1a; ZooKeeper官方的Java客户端API。第三方的Java客户端API&#xff0c;比如&#xff1a;Curator ZooKeeper官方的客户端API提供了基本的…

信息安全工程师(73)网络安全风险评估过程

一、确定评估目标 此阶段需要明确评估的范围、目标和要求。评估目标通常包括特定的网络系统、信息系统或网络基础设施&#xff0c;评估范围可能涉及整个组织或仅特定部门。明确评估要求有助于确保评估过程的针对性和有效性。 二、收集信息 在评估开始之前&#xff0c;需要对目标…

2024年10月23日Github流行趋势

项目名称&#xff1a;hiteshchoudhary / apihub 项目维护者&#xff1a;wajeshubham, atulbhatt-system32, jwala-anirudh, arnb-smnta, shrey-dadhaniya 项目介绍&#xff1a;您自己的API Hub&#xff0c;用于学习和掌握API交互。非常适合前端、移动开发人员和后端开发人员。 …

Vmos pro-虚拟机 解锁永久vip

[应用名称] 应用名称&#xff1a;Vmos pro [应用版本] 应用版本&#xff1a;2.99 [软件大小] 软件大小&#xff1a;32.2mb [应用简介] 应用简介&#xff1a;Vmos Pro这款安卓虚拟机平台&#xff0c;提供了多样化的ROM版本选择。用户可根据自身需求更换ROM&#xff0c;调…

华为OD机试 - 最多购买宝石数目 - 滑动窗口(Python/JS/C/C++ 2024 C卷 100分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…

1:基本电路专题:R(电阻)的介绍

说实话这个其实我不想写的&#xff0c;因为这个是初中的知识&#xff0c;并没有很难&#xff0c;但是为了保持整齐性&#xff0c;我还是写了一下关于这个的知识点。是电子学中三大基本无源元件之一。&#xff08;R&#xff08;电阻&#xff09;,L&#xff08;电感&#xff09;,…

【每日一题】2020年考研数据结构 - 求最短三元组

本题要求我们在三个非空整数集合中各取一个元素构成三元组&#xff0c;使其具有最小的距离。 题目描述 定义三元组 ( ( a , b , c ) ) ((a, b, c)) ((a,b,c)) 的距离 ( D ∣ a − b ∣ ∣ b − c ∣ ∣ c − a ∣ ) (D |a - b| |b - c| |c - a|) (D∣a−b∣∣b−c∣∣…

基于SpringBoot的“CSGO赛事管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“CSGO赛事管理系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统首页界面图 赛事信息界面图 赛事通知界面…

阿里云VPC机器如何访问公网

1.创建专有网络和交换机。 2.在弹性公网IP页面&#xff0c;创建弹性公网IP&#xff0c;详情请参见申请EIP。 3.在公网NAT网关页面&#xff0c;创建NAT网关&#xff0c;并绑定弹性公网IP&#xff0c; 参考&#xff1a; https://help.aliyun.com/zh/nat-gateway/getting-starte…

【QT】windows 平台 QT6.8 安装

qt-online-installer-windows-x64-4.8.1.exe Index of /qt/archive/online_installers/4.8/mirror 这里介绍了如何使用mir

CesiumJS 案例 P13:删除标记、移动标记、标记点击事件

CesiumJS CesiumJS API&#xff1a;https://cesium.com/learn/cesiumjs/ref-doc/index.html CesiumJS 是一个开源的 JavaScript 库&#xff0c;它用于在网页中创建和控制 3D 地球仪&#xff08;地图&#xff09; 一、删除标记 <!DOCTYPE html> <html lang"en&…

一七二、Vue3性能优化方式

Vue 3 的性能优化相较于 Vue 2 有了显著提升&#xff0c;利用新特性和改进方法可以更高效地构建和优化应用。以下是 Vue 3 的常见性能优化方法及示例。 1. 使用组合式 API (Composition API) Vue 3 引入的组合式 API&#xff0c;通过逻辑拆分和复用来实现更高效的代码组织和性…