RK1126 C++ yolov5 6.2

news2024/9/17 7:18:31

在这里插入图片描述

基于 rk npu , 实现 yolov5 6.2 模型推理

实现过程 ⚡️​

编译 opencv

  1. 需根据自己路径修改.
	cmake -D CMAKE_BUILD_TYPE=RELEASE \
	      -D CMAKE_C_COMPILER=./gcc-arm-8.3-2019.02-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc \
	      -D CMAKE_CXX_COMPILER=./gcc-arm-8.3-2019.02-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ \
	      -D CMAKE_INSTALL_PREFIX=/usr/local/opencv4.2_gnueabihf \
	      -D CMAKE_TOOLCHAIN_FILE=../platforms/linux/arm-gnueabi.toolchain.cmake \
	      -D OPENCV_FORCE_3RDPARTY_BUILD=ON \
	      -D BUILD_ZLIB=ON \
	      -D INSTALL_C_EXAMPLES=OFF \
	      -D INSTALL_PYTHON_EXAMPLES=OFF \
	      -D WITH_TBB=OFF \
	      -D WITH_V4L=ON \
	      -D WITH_CUBLAS=1 \
	      -D OPENCV_SKIP_PYTHON_LOADER=ON \
	      -D OPENCV_GENERATE_PKGCONFIG=ON \
	      -D WITH_QT=OFF \
	      -D WITH_OPENGL=ON \
	      -D WITH_FFMPEG=ON \
	      -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.2.0/modules \
	      -D ENABLE_CXX11=ON \
	      -D BUILD_EXAMPLES=OFF .. \
	      -D BUILD_opencv_world=ON ..
	  make -j4
	  sudo make install

Q&A ❓​

  1. zlib.h:没有那个文件或目录 #include <zlib.h>
    -D OPENCV_FORCE_3RDPARTY_BUILD=ON \
    -D BUILD_ZLIB=ON \
    
  2. opencv G_STATIC_ASSERT(sizeof (unsigned long long) == sizeof (guint64))
    -D CMAKE_TOOLCHAIN_FILE=../platforms/linux/arm-gnueabi.toolchain.cmake
    

Demo 👀

  1. 参考: https://github.com/shaoshengsong/rockchip_rknn_yolov5
  2. 这里修改了下前处理,使用 letterbox
    cv::Mat letterbox(const cv::Mat &img, cv::Size new_shape, cv::Scalar color, bool _auto, bool scaleFill, bool scaleup, int stride)
    {
        float width = img.cols;
        float height = img.rows;
        float r = cv::min(new_shape.width / width, new_shape.height / height);
        if (!scaleup)
            r = cv::min(r, 1.0f);
        int new_unpadW = int(round(width * r));
        int new_unpadH = int(round(height * r));
        int dw = new_shape.width - new_unpadW;
        int dh = new_shape.height - new_unpadH;
        if (_auto)
        {
            dw %= stride;
            dh %= stride;
        }
        dw /= 2, dh /= 2;
        cv::Mat dst;
        resize(img, dst, cv::Size(new_unpadW, new_unpadH), 0, 0, cv::INTER_LINEAR);
        int top = int(round(dh - 0.1));
        int bottom = int(round(dh + 0.1));
        int left = int(round(dw - 0.1));
        int right = int(round(dw + 0.1));
        copyMakeBorder(dst, dst, top, bottom, left, right, cv::BORDER_CONSTANT, color);
    
        pad_left_ = left;
        pad_top_ = top;
        scale_ = r;
        return dst;
    }
    
  3. inference
    int inference(const cv::Mat &orig_img, rt_detect_result_group_t &detect_result_group){
    	...
    	cv::Mat img = letterbox(orig_img, cv::Size(width_, height_), cv::Scalar(114, 114, 114), false, false, false, 32);
    	cv::Mat resimg;
    	// cv::resize(orig_img, resimg, cv::Size(width_, height_), (0, 0), (0, 0), cv::INTER_LINEAR);
    	cv::cvtColor(img, resimg, cv::COLOR_BGR2RGB);
     ...
    }
    
  4. 执行 ./build.sh
  5. 我用的 adb ,将程序拷贝到 rk1126 板子上.
    adb.exe push xxx  xxxx
    

在这里插入图片描述


参考文章 📖​

  1. https://github.com/shaoshengsong/rockchip_rknn_yolov5
  2. https://github.com/rockchip-linux/rknpu

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

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

相关文章

【Linux】多线程02 --- 线程的同步互斥问题及生产消费模型

&#x1f34e;作者&#xff1a;阿润菜菜 &#x1f4d6;专栏&#xff1a;Linux系统编程 目录 一、线程互斥1. 为什么要有共享资源临界保护&#xff1f; 2.理解加锁2.1 认识锁&#xff0c;使用锁 线程同步互斥问题是指多线程程序中&#xff0c;如何保证共享资源的正确访问和线程间…

阿里P8大佬七天七夜制作这份自动化核心知识点,错过了就是错过了

整理了一份自动化核心知识点。覆盖了web前端基础&#xff0c;HTML标签&#xff0c;CSS样式&#xff0c;自动化测试工具&#xff0c;webdriver环境搭建&#xff0c;元素定位&#xff0c;手机操作系统&#xff0c;移动自动化测试工具&#xff0c;自动化测试的流程与分类&#xff…

web自动化测试入门篇01——框架介绍

1. 目的 web自动化测试作为软件自动化测试领域中绕不过去的一个“香饽饽”&#xff0c;通常都会作为广大测试从业者的首选学习对象&#xff0c;相较于C/S架构的自动化来说&#xff0c;B/S有着其无法忽视的诸多优势&#xff0c;从行业发展趋、研发模式特点、测试工具支持&#x…

高完整性系统(7)Formal Verification and Validation

文章目录 Specification Process 规格化过程State Invariants案例check ... expect Alloy是一种用于构建和检查抽象模型的语言和工具。当Alloy说所有断言都成立时&#xff0c;这意味着你的模型或规格在给定范围内已成功通过了所有的断言检查。换句话说&#xff0c;对于你所定义…

SOLIDWORKS PDM 独立程序 C#

本主题介绍如何创建登录到 一个 SOLIDWORKS PDM Professional 文件库&#xff0c;并列出根文件夹中的文件。 启动Visual Studio.文件 > 新建 > 项目 > Visual C# > WPF&#xff08;也可以使用WF&#xff09; 输入程序名称选择存储路径确定在解决方案资源管理器中…

(学习日记)2023.06.06

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

【Linux】基础文件IO、动静态库的制作和使用

基础IO 前言回顾C语言文件IO操作三个标准 系统文件I/O系统调用接口不带mode的open带mode的openwirtereadopen的第二个参数flagsopen返回值文件的管理0&#xff0c;1&#xff0c;2演示文件描述符的分配规则重定向C中的0、1、2输入重定向追加重定向 另一种重定向的方式dup2实现输…

MySQL5.7主从同步配置(一台master,两台slave)

1. 下载MySQL(5.7.42) rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm2.安装 yum install mysql-server2.1 安装过程中如果报错如下&#xff0c;按下边方法处理。否则略过即可 2.2 解决方案&#xff1a;执行以下命令 rpm --import https…

mongodb redis mysql 区别

一、MySQL 关系型数据库。 在不同的引擎上有不同 的存储方式。 查询语句是使用传统的sql语句&#xff0c;拥有较为成熟的体系&#xff0c;成熟度很高。 开源数据库的份额在不断增加&#xff0c;mysql的份额页在持续增长。 缺点就是在海量数据处理的时候效率会显著变慢。 二、Mo…

Vue3中setup函数、以及父子组件传值讲解

文章目录 1.vue3中setup函数的执行时机2.setup函数的两种写法2.1 普通写法2.2 语法糖写法 3.vue3父组件给子组件传值。4.vue3子组件给父组件传值 1.vue3中setup函数的执行时机 setup选项的写法和执行时机&#xff0c;setup函数在beforeCreate函数之前执行&#xff0c;并且是自…

以安全为底线 共迎机遇和挑战|2023 开放原子全球开源峰会可信基础设施技术分论坛即将启幕

蚂蚁集团的业务领域&#xff0c;对于「可信」有非常高的技术要求。这种可信技术不仅体现在可靠、健壮&#xff0c;也体现在金融领域独有的风控难题以及分布式系统中持续提供服务的续航能力。可信基础设施中有大量的开源项目&#xff0c;而新的机会也在不断涌现。 2023 开放原子…

echarts 图表导出PDF(带滚动条)/图片导出PDF

echarts 图表导出PDF[带滚动条]/图片导出PDF 效果展示提出问题思考问题解决问题导出PDF 里面的页头中文乱码问题参数说明 效果展示 提出问题 在开发过程中,有需求是将展示出来的echarts图表导出为pdf 原本我的滚动条是使用echarts图表进行的滚动,但通过了解后得知,echarts图表如…

《人月神话》阅读推荐

用了两周的时间&#xff0c;大致过了一遍。书中讲述的很多方面可能此时并没有很深刻的体会&#xff0c;但是该书的预见性和分析还是很让人钦佩的。书中对项目、产品、程序、程序员等一系列对象的分析是相当精准的。虽然距今已有四十多年&#xff0c;但很多依旧在发生。   书中…

Java设计模式(四)

系列文章目录 UML类图 文章目录 系列文章目录前言一、UML类图二、UML基本介绍三、UML图1.类图—依赖关系(Dependence)2.类图—泛化关系(generalization)3.类图—实现关系(Implementation)4.类图—关联关系(Association)5.类图—聚合关系(Aggregation)6.类图—组合关系(Composi…

分布式(二)-大型网站架构演化发展历程

大型网站架构演化发展历程 大型网站的技术挑战主要来自于庞大的用户&#xff0c;高并发的访问和海量的数据&#xff0c;任何简单的业务一旦需要处理数以 P 计的数据和面对数以亿计的用户&#xff0c;问题就会变得很棘手。大型网站架构主要解决这类问题。 初始阶段的网站架构 …

MinIO 分片上传

文章目录 1.MinIO 简介2.为什么要分片上传&#xff1f;3.实现思路4.具体实现初始化客户端获取分片上传的预签名 URL合并分片中止合并 5.FAQ端口错误协议错误 参考文献 1.MinIO 简介 MinIO 是适用于 AI 的高性能对象存储系统。 MinIO 简单易用。简单性是 EB 级数据基础设施的基…

宝塔配置MySQL队列调度 | ModStart

执行以下操作前提前进入网站根目录&#xff0c;如 cd /www/wwwroot/xxx.com执行 artisan 命令前请参照 开发教程 → 开发使用常见问题 → 如何运行 /www/server/php/xxx/bin/php artisan xxx 命令 ① 生成数据库队列表迁移文件 在执行该步骤前&#xff0c;请先检查迁移文件 da…

【CSS 05】文本颜色 文本对齐 文字装饰 文本转换 文字间距 文本阴影 字体 字体样式 字体大小 谷歌字体

CSS 说在前面文本 text文本对齐 text-align文字装饰 text-decoration文本转换 text-transform文字间距 text_spacing文本阴影 text-shadow字体 font字体样式 font-style字体大小 font-size谷歌字体简写属性 shorthand 说在前面 事实证明&#xff0c;Zoro只要出现在标题就会被识…

go-GUI开发:fyne解决中文乱码+注册windows服务

go-GUI框架&#xff1a;fyne教程及解决中文乱码等常见bug 1 fyne教程 fyne教程地址&#xff1a; https://www.topgoer.cn/docs/goday/goday-1crdp17nj4v6phttps://pkg.go.dev/fyne.io/fyne/v2#section-readme 1.1 介绍 简单易用&#xff0c;fyne提供了简单直观的API&#xff…

iOS编译提效插件cocoapods-jxedt方案详解

1. 前言 本篇文章是cocoapods-jxedt插件实现方案的详解&#xff0c;主要从以下几个方面阐述了一下插件的实现方案和历程。 插件文件目录介绍插件的工作流程介绍插件实现过程中的问题和解决方案记录 如果你对插件的使用还不了解&#xff0c;建议先读一下cocoapods-jxedt使用介…