Linux上位机开发实践(OpenCV算法硬件加速)

news2025/4/16 5:05:16

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        图像处理里面,opencv基本是一个标准模块。但是由于图像处理的特点,如果所有的算法都是cpu来做的话,效率会很低。那么,为了提高效率,就会使用好一点的cpu。在嵌入式设备上,用好一点的soc,自然而然对应的成本就会上升。所以,这里面就需要有一个平衡,即提高算法的性能,也要降低硬件的成本。

1、opencv常用的加速方法

        目前来说,opencv加速主要有这么几个方向。第一,汇编优化。这种方法,就是把常用的算法,用汇编指令重新实现一下,一般难度较大。第二,用cuda代替。cuda是nvidia公司的gpu开发平台。所以如果使用cuda,要么安装nvidia的显卡,要么使用nvidia的嵌入式soc,两者都不便宜。第三,使用带有硬加速平台的soc,比如某思的ive模块。

2、哪些算法可以做成硬加速

        图像处理中,有一些固定模式的算法,可以做成硬件加速的形式。这里面包括文件格式的转换、增强、滤波、二值化、膨胀、腐蚀等等。工业图像上面,一般对物体的提取也就是这几个步骤。只有最后一步轮廓提提取的时候,才会用cpu去算。

3、硬件加速原理

        和cpu一个、一个去处理元素不同,硬件处理图像的时候一般是数据读取、处理、保存同时进行的。在过程当中,很多计算是同时进行的,假设有一个3x3的矩阵,硬件来处理的话,就会这么来做,

        第一步,同时计算矩阵的9个数据,每个计算就是mac处理,即3乘1加;

        第二步,将9个计算好的数据做一次加法运算;

        第三步,计算结果写入buffer,等待写入内存。

4、怎么使用加速模块

        使用方法基本和opencv是一样,直接调用soc厂家提供的api即可。一般来说,对于一个应用而言,前半部分,都是使用加速模块完成的;后面的部分还是由cpu完成的。后面的这一段算法,没有办法用硬件加速完成,类似于轮廓查找、阈值剔除、业务逻辑处理等等。

        很多加速api其实一眼就知道对应的功能是什么,比如ss_mpi_ive_dilate、ss_mpi_ive_erode、ss_mpi_ive_threshold等等。如果想更简单一点,可以把mode设置为阻塞的模式,这样硬件执行完毕了,才能进行后续的动作。不过为了提高效率,最好是把所有的command都提交上去,等待所有的command的结果一起下来就好了。

        当然,使用加速模块的前提,首先是保证对应的算法驱动加载好。这些驱动要么位于kernel中,要么位于ko文件中。

5、怎么调试

        调试的方法一般有两种,一种是直接看api的返回值,即通过打印的方法来进行调试;另外一种就是通过查看cat /pro/unmap/ive的办法来进行调试。这些都是通用的步骤。

6、其他加速模块

        除了常用的图像加速之外,另外一块就是AI加速。很多soc现在都配备了npu,所以现在需要做的就是把pc训练好的model,通过厂家的工具翻译成soc可以识别的model,通过npu来加载、运行,获得最终的结果。不同的厂家可能有不同的名字来做这一件事情,比如某思就叫nnie,但是实质是一个道理。

        本质上,不管是isp,还是编解码、ive、nnie、crc、aes、mpp,本质上都是把常用的、费时间的、逻辑固定的算法硬件化,这样就不需要很好的cpu,也能实现一样的图像处理性能。

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

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

相关文章

Spring Boot MongoDB自定义连接池配置

手打不易,如果转摘,请注明出处! 注明原文:http://zhangxiaofan.blog.csdn.net/article/details/144341407 一、引言 在 Spring Boot 应用中使用 MongoDB 时,合理配置连接池可以显著提升数据库访问的性能和稳定性。默…

游戏引擎学习第223天

回顾 今天我们正在进行过场动画序列的制作,因此我想深入探讨这个部分。昨天,我们暂时停止了过场动画的制作,距离最终结局还有一些内容没有完成。今天的目标是继续完成这些内容。 我们已经制作了一个过场动画的系列,并把它们集中…

DeepSeek 助力 Vue3 开发:打造丝滑的日历(Calendar),日历_基础功能示例(CalendarView01_01)

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 DeepSeek 助力 Vue3 开发:打造丝滑的日历(Calendar),日历_基础功能示例(CalendarView01_01)📚…

LabVIEW配电器自动测试系统

随着航天技术的迅猛发展,航天器供配电系统的结构越来越复杂,对配电器的功能完整性、稳定性和可靠性提出了更高要求。传统人工测试方式难以满足高效率、高精度、可重复的测试需求。本项目开发了一套基于LabVIEW平台的宇航配电器自动测试系统,融…

PhotoShop学习09

1.弯曲钢笔工具 PhotoShop提供了弯曲钢笔工具可以直观地创建路径,只需要对分段推拉就能够进行修改。弯曲港币工具位于工具面板中的钢笔工具里,它的快捷键为P。 在使用前,可以把填充和描边选为空颜色,并打开路径选项,勾…

【C++】哈希unordered_map和set的使用以及哈希表,哈希桶的概念以及底层实现

📚 博主的专栏 🐧 Linux | 🖥️ C | 📊 数据结构 | 💡C 算法 | 🌐 C 语言 本文章完整代码在下篇文章开头给出 上篇文章:map和set使用红黑树封装的底层实现 下篇文章:封装…

设计模式——建造者模式(生成器模式)总结

当我们需要创建一个非常复杂的对象时,可以使用建造者模式,分步骤建造一个对象,最后将完整的对象返回给客户端。 比如,我们要生成一个房子对象,建造一个房子,需要打地基、盖围墙、盖地板、安装门、安装窗户…

使用Python爬虫的2大原因和6大常用库

爬虫其实就是请求http、解析网页、存储数据的过程,并非高深的技术,但凡是编程语言都能做,连Excel VBA都可以实现爬虫,但Python爬虫的使用频率最高、场景最广。 这可不仅仅是因为Python有众多爬虫和数据处理库,还有一个…

Java 架构设计:从单体架构到微服务的转型之路

Java 架构设计:从单体架构到微服务的转型之路 在现代软件开发中,架构设计的选择对系统的可扩展性、可维护性和性能有着深远的影响。随着业务需求的日益复杂和用户规模的不断增长,传统的单体架构逐渐暴露出其局限性,而微服务架构作…

C# 混淆代码工具--ConfuserEx功能与使用指南

目录 1 前言1.1 可能带来的问题 2 ConfuserEx2.1 简介2.2 功能特点2.3 基本使用方法2.4 集成到MSBuild2.5 深入设置2.5.1 保护机制2.5.1.1 ConfuserEx Protection 2.5.2 精细的代码保护主要特性1. decl-type(string)2.full-name(string)3. is-public()4. match(string)5. match…

使用PyTorch实现目标检测边界框转换与可视化

一、引言 在目标检测任务中,边界框(Bounding Box)的坐标表示与转换是核心基础操作。本文将演示如何: 实现边界框的两种表示形式(角点坐标 vs 中心坐标)之间的转换 使用Matplotlib在图像上可视化边界框 验…

nlp面试重点

深度学习基本原理:梯度下降公式,将损失函数越来越小,最终预测值和实际值误差比较小。 交叉熵:-p(x)logq(x),p(x)是one-hot形式。如果不使用softmax计算交叉熵,是不行的。损失函数可能会非常大,…

欢乐力扣:反转链表二

文章目录 1、题目描述2、思路 1、题目描述 反转链表二。  给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 2、思路 参考官方题解&#xff0c;基本思路…

14-大模型微调和训练之-Hugging Face 模型微调训练(基于 BERT 的中文评价情感分析(二分类))

1. datasets 库核心方法 1.1. 列出数据集 使用 datasets 库&#xff0c;你可以轻松列出所有 Hugging Face 平台上的数据集&#xff1a; from datasets import list_datasets # 列出所有数据集 all_datasets list_datasets() print(all_datasets)1.2. 加载数据集 你可以通过…

论文阅读笔记——Reactive Diffusion Policy

RDP 论文 通过 AR 提供实时触觉/力反馈&#xff1b;慢速扩散策略&#xff0c;用于预测低频潜在空间中的高层动作分块&#xff1b;快速非对称分词器实现闭环反馈控制。 ACT、 π 0 \pi_0 π0​ 采取了动作分块&#xff0c;在动作分块执行期间处于开环状态&#xff0c;无法及时响…

ISIS协议(动态路由协议)

ISIS基础 基本概念 IS-IS&#xff08;Intermediate System to Intermediate System&#xff0c;中间系统到中间系统&#xff09;是ISO &#xff08;International Organization for Standardization&#xff0c;国际标准化组织&#xff09;为它的CLNP&#xff08;ConnectionL…

UniApp 实现兼容 H5 和小程序的拖拽排序组件

如何使用 UniApp 实现一个兼容 H5 和小程序的 九宫格拖拽排序组件&#xff0c;实现思路和关键步骤。 一、完整效果图示例 H5端 小程序端 git地址 二、实现目标 支持拖动菜单项改变顺序拖拽过程实时预览移动位置拖拽松开后自动吸附回网格兼容 H5 和小程序平台 三、功能…

【网络协议】WebSocket讲解

目录 webSocket简介 连接原理解析: 客户端API 服务端API&#xff08;java&#xff09; 实战案例 &#xff08;1&#xff09;引入依赖 &#xff08;2&#xff09;编写服务端逻辑 &#xff08;3&#xff09;注册配置类 &#xff08;4&#xff09;前端连接 WebSocket 示例…

啥是Spring,有什么用,既然收费,如何免费创建SpringBoot项目,依赖下载不下来的解决方法,解决99%问题!

一、啥是Spring&#xff0c;为啥选择它 我们平常说的Spring指的是Spring全家桶&#xff0c;我们为什么要选择Spring&#xff0c;看看官方的话&#xff1a; 意思就是&#xff1a;用这个东西&#xff0c;又快又好又安全&#xff0c;反正就是好处全占了&#xff0c;所以我们选择它…

一天时间,我用AI(deepseek)做了一个配色网站

前言 最近在开发颜色搭配主题的相关H5和小程序&#xff0c;想到需要补充一个web网站&#xff0c;因此有了这篇文章。 一、确定需求 向AI要答案之前&#xff0c;一定要清楚自己想要做什么。如果你没有100%了解自己的需求&#xff0c;可以先让AI帮你理清逻辑和思路&#xff0c;…