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;
}

运行结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/904791.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python小游戏17——飞机大战

运行结果 首先&#xff0c;你需要安装Pygame库。如果你还没有安装它&#xff0c;可以使用以下命令来安装&#xff1a; bash pip install pygame 代码&#xff1a; python import pygame import random # 初始化Pygame pygame.init() # 屏幕大小 SCREEN_WIDTH 800 SCREEN_HEIGH…

Java 基本语法与语言环境(1/30)

目录 Java 基本语法与语言环境 1. Java 语言环境搭建 1.1 安装 JDK 1.2 配置系统变量 配置步骤&#xff08;Windows 系统&#xff09; 2. Hello World 程序 2.1 代码解析 2.2 编译与运行 3. Java 程序结构 4. 基本语法规则 4.1 标识符与关键字 4.2 数据类型与变量 …

开源一个开发的聊天应用与AI开发框架,集成 ChatGPT,支持私有部署的源码

大家好&#xff0c;我是一颗甜苞谷&#xff0c;今天分享一个开发的聊天应用与AI开发框架&#xff0c;集成 ChatGPT&#xff0c;支持私有部署的源码。 介绍 当前系统集成了ChatGPT的聊天应用&#xff0c;不仅提供了基本的即时通讯功能&#xff0c;还引入了先进的AI技术&#x…

LSTM——长短期记忆神经网络

目录 1.LSTM 工作原理 2.LSTM的代码实现 3.代码详解 LSTM&#xff08;Long Short-Term Memory&#xff09;是一种特殊的循环神经网络&#xff08;RNN&#xff09;&#xff0c;用于解决长序列中的长期依赖问题。它通过引入门机制&#xff0c;控制信息的流入、保留和输出&…

大数据新视界 -- 大数据大厂之优化大数据计算框架 Tez 的实践指南

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

dedecms手机搜索不跳转手机页面模板的解决方法

1.找到文件plus/search.php&#xff0c;添加如下代码并保存 $mobile (isset($mobile) && is_numeric($mobile)) ? $mobile : 0; if ( $mobile1 ) {define(DEDEMOB, Y); } 2.来到网站后台&#xff0c;默认模板管理&#xff0c;新建模板 将手机端列表页面的.html文件&…

UE5之5.4 第一人称示例代码阅读2 子弹发射逻辑

TP_WeaponComponent.h 看看头文件 暴露了attach weapon和fire给蓝图 这两个函数意义一看名字吧&#xff0c;就是捡起来枪的时候执行&#xff0c;一个就是发射子弹的时候执行 #pragma once#include "CoreMinimal.h" #include "Components/SkeletalMeshComponen…

matlab读取逐日的1km分辨率中国大陆地区的土壤水数据,并汇总至逐月分辨率

1.前言 ESSD一篇文章介绍了逐日的土壤水数据&#xff1a; ESSD - A 1 km daily soil moisture dataset over China using in situ measurement and machine learning 图片来源&#xff1a;Li et al., 2022, ESSD 中国大陆地区的土壤水的数据下载地址&#xff1a; 国家青藏高…

哈工大《理论力学》第九版课后答案解析及笔记PDF

第九版序 哈工大《理论力学》初版于1961年&#xff0c;先后再版8次&#xff0c;曾获得首届国家优秀教材奖和国家级教学成果奖。本书第8版为“十二五”普通高等教育本科国家级规划教材&#xff0c;并于2021年被国家教材委员会评为首届全国教材建设奖全国优秀教材一等奖。 本书…

MindShare PCIE 3.0 笔记-第三四章

MindShare 官网&#xff0c;地址如下: MindShare Charpter 3: Configuration 概述 主要介绍 PCIe 驱动对 PCIE 设备中 function 的 Config Header 的访问. 1. 总线、设备与功能定义 每一个 PCIE function 都是独一无二的&#xff0c;通过设备号与总线号区分。 2. PCIe 总线…

Windows和Linux等保加固测评(2)

本文以等保2.0为标准,三级等保要求,centos7.6.1810系统为例进行演示。 关于加密 /etc/shadow文件格式和/etc/passwd类似,由若干字段组成,字段之间用“:”隔开 登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志 ice:$6$5NA…

Redis的删除策略以及内存淘汰机制

在日常开发中&#xff0c;我们使用 Redis 存储 key 时通常会设置一个过期时间&#xff0c;但是 Redis 是怎么删除过期的 key&#xff0c;而且 Redis 是单线程的&#xff0c;删除 key 会不会造成阻塞。要搞清楚这些&#xff0c;就要了解 Redis 的过期策略和内存淘汰机制。 Redi…

h5小游戏5--杀死国王(附源码)

源代码如下 1.游戏基本操作 用空格键攻击&#xff0c;kill the king。 css样式源码 charset "UTF-8";font-face {font-family: "AddLGBitmap09";src: url("https://assets.codepen.io/217233/AddLGBitmap09.woff2") format("woff2"…

CentOS下安装ElasticSearch7.9.2(无坑版)

准备目录 搞一个自己喜欢的目录 mkdir /usr/local/app切换到该目录 cd /usr/local/app下载 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.2-linux-x86_64.tar.gz选择其他版本 点击进入官网 https://www.elastic.co/guide/en/elasticsea…

Seven 9.20.01 | 趣味个人锻炼挑战,每天7分钟,坚持7个月

这是一款趣味个人锻炼挑战应用&#xff0c;基于《纽约时报杂志》报道的7分钟科学锻炼文章。无需锻炼设备&#xff0c;每天只需几分钟时间&#xff0c;趣味成就和奖励不断鼓励你。只需一张椅子、墙壁和自身的体重&#xff0c;7分钟锻炼基于科学研究&#xff0c;可在较短的时间内…

传智杯 第六届-复赛-A

题目描述&#xff1a; 小红拿到了一个字符串&#xff0c;她准备把这个字符串劈成两部分&#xff0c;使得第一部分的长度恰好是第二部分的两倍。你能帮帮她吗&#xff1f; 输入描述: 一个仅由小写字母组成的字符串&#xff0c;长度不超过10^5。 输出描述: 如果无解&#xff0c…

RFID技术实现产线全自动管理

产线自动化管理是现代制造企业提升竞争力的关键&#xff0c;它通过减少人工干预、提高生产效率、降低成本和增强库存管理的准确性&#xff0c;帮助企业实现精益生产。自动化管理系统能够实时监控生产过程&#xff0c;快速响应市场变化&#xff0c;提高产品的质量和交付速度。在…

CentOS 7 下升级 OpenSSL

升级openssh,下载&#xff1a;https://download.csdn.net/download/weimeilayer/89935114 上传到服务器&#xff0c;然后执行命令 rpm -Uvh *.rpm --nodeps --force安装依赖 yum -y install gcc perl make zlib-devel perl-CPAN下载安装包&#xff1a;https://github.com/ope…

C# 结构型设计模式----装饰器模式

1、简介 简要说明就是动态地给一个对象添加一些额外的职责。适用于需要扩展一个类的功能&#xff0c;或给一个类添加多个变化的情况。 装饰器&#xff0c;顾名思义就是在原有基础上添加一些功能。 装饰器模式中各个角色有&#xff1a; 抽象构件&#xff08;Component&#x…

.NET内网实战:通过白名单文件反序列化漏洞绕过UAC

01阅读须知 此文所节选自小报童《.NET 内网实战攻防》专栏&#xff0c;主要内容有.NET在各个内网渗透阶段与Windows系统交互的方式和技巧&#xff0c;对内网和后渗透感兴趣的朋友们可以订阅该电子报刊&#xff0c;解锁更多的报刊内容。 02基本介绍 03原理分析 在渗透测试和红…