milkv-duo cvi-mmf 硬件加速 JPG 解码性能测试

前言

本文是基于 nihui 老师的 opencv-mobile 对其支持 milkv-duo cvi-mmf 硬件加速 JPG 解码的测试。
nihui 老师原文章如下:opencv-mobile 现已支持 milkv-duo cvi-mmf 硬件加速 JPG 解码
opencv-mobile 仓库地址如下:nihui/opencv-mobile: The minimal opencv for Android, iOS, ARM Linux, Windows, Linux, MacOS, WebAssembly (github.com)

仅供学习交流使用,侵删!

  1. opencv-mobile highgui 模块在运行时动态加载 cvi 库,JPG 硬件解码
  2. 无需修改代码,cv::imread()cv::imdecode() 自动支持
  3. 支持EXIF自动旋转,支持直接解码为grayscale
  4. 因为只测试验证了 milkv-duo/milkv-duo-256m,白名单暂时只有 milkv-duo/milkv-duo-256m

——nihui 老师

编译 opencv-mobile

这次的尝试同样是编译 opencv-mobile 和 opencv-mobile-test 程序并烧录到 milkv duo 开发板上使用,下载编译等流程基本一致(注意我的上篇文章中提到的 patches 文件夹小问题)。

另外,此次测试我尝试使用了内存更大的 Milkv duo 256 版本。使用区别仅在于需要使用新版镜像。

3d40c4941f72eed4a249a1e82f05dbe

基本流程和上一篇文章一样。

git pull 获取最新版本 opencv-mobile 源码后,首先需要检查修改 test 文件夹内的 CMakeLists.txt 文件为:

project(opencv-mobile-test)
cmake_minimum_required(VERSION 3.5)
set(CMAKE_CXX_STANDARD 11)

set(OpenCV_DIR "${CMAKE_CURRENT_SOURCE_DIR}/opencv-mobile-4.8.1-milkv-duo/lib/cmake/opencv4")
find_package(OpenCV REQUIRED)

add_executable(opencv-mobile-test main.cpp)

target_link_libraries(opencv-mobile-test ${OpenCV_LIBS})

然后仍然是引入编译 opencv-4.8.1。自己编译的方式如下:

$ cd opencv-mobile

$ wget -q https://github.com/opencv/opencv/archive/4.8.1.zip
$ unzip -q opencv-4.8.1.zip
$ cd opencv-4.8.1

$ truncate -s 0 cmake/OpenCVFindLibsGrfmt.cmake
$ rm -rf modules/gapi
$ patch -p1 -i ../patches/opencv-4.8.1-no-rtti.patch
$ patch -p1 -i ../patches/opencv-4.8.1-no-zlib.patch
$ patch -p1 -i ../patches/opencv-4.8.1-link-openmp.patch
$ rm -rf modules/highgui
$ cp -r ../highgui modules/

$ mkdir build
$ cd build
$ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/riscv64-unknown-linux-musl.toolchain.cmake -DCMAKE_C_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_CXX_FLAGS="-fno-rtti -fno-exceptions" -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release `cat ../../opencv4_cmake_options.txt` -DBUILD_opencv_world=OFF -DOPENCV_DISABLE_FILESYSTEM_SUPPORT=ON ..
$ make -j16
$ make install

不过项目主页上 nihui 老师已经放上了下载编译好的版本,可以直接下载到 opencv-mobile 文件夹中,省略上一步。下载链接:https://github.com/nihui/opencv-mobile/releases/latest/download/opencv-mobile-4.8.1.zip

img

编译 opencv-mobile-test 文件。

$ export RISCV_ROOT_PATH=$HOST_TOOL_PATH/gcc/riscv64-linux-musl-x86_64

$ cd opencv-mobile/test

$ mkdir build
$ cd build
$ cmake -DCMAKE_TOOLCHAIN_FILE=../../toolchains/riscv64-unknown-linux-musl.toolchain.cmake -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=/home/nihui/dev/opencv-mobile/opencv-4.8.0/build/install/lib/cmake/opencv4 ..
$ make

运行结果

这次因为使用了 256MB Milkv Duo,所以应该可以尝试大一点的图片处理。我选用了一张3600KB的图片,opencv-mobile-test 仍然是简单的图片压缩处理(->200*200 大小)。

旧版程序:

[root@milkv-duo]~# time sh -c 'LD_LIBRARY_PATH=. ./opencv-mobile-test'
this device is not
real    0m 2.11s
user    0m 1.82s
sys     0m 0.27s
[root@milkv-duo]~# time sh -c 'LD_LIBRARY_PATH=. ./opencv-mobile-test'
this device is not
real    0m 2.11s
user    0m 1.82s
sys     0m 0.28s
[root@milkv-duo]~# time sh -c 'LD_LIBRARY_PATH=. ./opencv-mobile-test'
this device is not
real    0m 2.11s
user    0m 1.78s
sys     0m 0.31s
[root@milkv-duo]~# time sh -c 'LD_LIBRARY_PATH=. ./opencv-mobile-test'
this device is not
real    0m 2.10s
user    0m 1.78s
sys     0m 0.31s
[root@milkv-duo]~# time sh -c 'LD_LIBRARY_PATH=. ./opencv-mobile-test'
this device is not
real    0m 2.11s
user    0m 1.82s
sys     0m 0.27s

新版程序:

[root@milkv-duo]~# time sh -c 'LD_LIBRARY_PATH=. ./opencv-mobile-test'
this device is not whitelisted for jpeg encoder rkmpp
Command terminated by signal 11
real    0m 0.36s
user    0m 0.10s
sys     0m 0.15s
[root@milkv-duo]~# time sh -c 'LD_LIBRARY_PATH=. ./opencv-mobile-test'
this device is not whitelisted for jpeg encoder rkmpp
Command terminated by signal 11
real    0m 0.36s
user    0m 0.11s
sys     0m 0.14s
[root@milkv-duo]~# time sh -c 'LD_LIBRARY_PATH=. ./opencv-mobile-test'
this device is not whitelisted for jpeg encoder rkmpp
Command terminated by signal 11
real    0m 0.36s
user    0m 0.12s
sys     0m 0.13s
[root@milkv-duo]~# time sh -c 'LD_LIBRARY_PATH=. ./opencv-mobile-test'
this device is not whitelisted for jpeg encoder rkmpp
Command terminated by signal 11
real    0m 0.36s
user    0m 0.09s
sys     0m 0.17s
[root@milkv-duo]~# time sh -c 'LD_LIBRARY_PATH=. ./opencv-mobile-test'
this device is not whitelisted for jpeg encoder rkmpp
Command terminated by signal 11
real    0m 0.36s
user    0m 0.12s
sys     0m 0.13s

整体速度提升了5倍以上。

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

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

相关文章

响应式Web开发项目教程(HTML5+CSS3+Bootstrap)第2版 例4-3 textarea

代码 <!doctype html> <html> <head> <meta charset"utf-8"> <title>textarea</title> </head><body> <h2>多行文本框:</h2> <!--textarea&#xff08;文本域&#xff09;cols(列) rows(行)--> …

Spring Web文件上传功能简述

文章目录 正文简单文件上传文件写入 总结 正文 在日常项目开发过程中&#xff0c;文件上传是一个非常常见的功能&#xff0c;当然正规项目都有专门的文件服务器保存上传的文件&#xff0c;实际只需要保存文件路径链接到数据库中即可&#xff0c;但在小型项目中可能没有专门的文…

微信这个费用,终于降低了

大家好&#xff0c;我是小悟 这个费用降低了&#xff0c;这对于广大小程序开发者来说无疑是一个好消息。这一举措不仅可以降低开发者的成本&#xff0c;还有助于激发更多的创新和创业激情。 对于广大小程序开发者来说&#xff0c;这也是一个福音&#xff0c;因为他们可以降低开…

Pypputeer自动化

Pyppeteer简介 pyppeteer 是 Python 语言的一个库&#xff0c;它是对 Puppeteer 的一个非官方端口&#xff0c;Puppeteer 是一个 Node 库&#xff0c;Puppeteer是Google基于Node.js开发的一个工具&#xff0c;它提供了一种高层次的 API 来通过 DevTools 协议控制 Chrome 或 Ch…

#Pytorch 使用DDP训练第一轮,验证后第二轮卡住

问题&#xff1a;在使用DDP分布式训练的时候&#xff0c;在第一轮训练后验证结果&#xff0c;在第二轮开始时就卡住了。因为设置了dist.barrier()&#xff0c;所以只有第一个GPU跑了验证&#xff0c;在第二轮时只有第一个GPU的模型在&#xff0c;其他卡的模型都被阻塞住了。 解…

Linux下使用Docker部署MinIO实现远程上传

&#x1f4d1;前言 本文主要是Linux下通过Docker部署MinIO存储服务实现远程上传的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是青衿&#x1f947; ☁️博客首页&#xff1a;CSDN主页放风讲故事 &#…

在vue中使用echarts渲染地图,geo点击某个区域可高亮,取消

一、安装echarts npm install echarts --save二、main.js引入注册 import Vue from "vue";import * as echarts from "echarts";Vue.prototype.$echarts echarts;三、vue文件中使用echarts <template><div class"page-warp"><…

mysql原理--锁

1.解决并发事务带来问题的两种基本方式 上一章唠叨了事务并发执行时可能带来的各种问题&#xff0c;并发事务访问相同记录的情况大致可以划分为3种&#xff1a; (1). 读-读 情况&#xff1a;即并发事务相继读取相同的记录。 读取操作本身不会对记录有一毛钱影响&#xff0c;并不…

聚铭入选“2023中国数字安全能力图谱(精选版)”安全运营领域

近日&#xff0c;国内权威数字安全领域第三方调研机构数世咨询正式发布《2023年度中国数字安全能力图谱&#xff08;精选版&#xff09;》。聚铭网络作为国内领先的安全运营商&#xff0c;凭借在细分领域突出优势&#xff0c;成功入选该图谱“安全运营”领域代表厂商。 据悉&a…

6.4.2转换文件

6.4.2转换文件 利用Swf2VideoConverter2可以很方便地将Flash动画(*.swf)转换为其它的视频格式。 1&#xff0e;单击“添加”按钮&#xff0c;在弹出的下拉菜单中选择“添加文件”&#xff0c;在弹出的“Open Swf Files(打开Swf文件)”窗口中选择swf文件(如&#xff1a;那些花…

使用nginx搭建网页

一、实验要求 网站需求&#xff1a; 1.基于域名www.openlab.com可以访问网站内容为 welcome to openlab!!! 2.给该公司创建三个子界面分别显示学生信息&#xff0c;教学资料和缴费网站&#xff0c;基于www.openlab.com/student 网站访问学生信息&#xff0c;www.openlab.com…

element中Table表格控件单选、多选功能进一步优化

目录 一、代码实现1、 父组件2、子组件&#xff08;弹框&#xff09; 二、效果图 一、代码实现 1、 父组件 <template><div><!-- 用户选择嵌套弹框 --><el-dialog :close-on-click-modal"false" :close-on-press-escape"false" tit…

OPC UA 开源库编译方法及通过OPC UA连接西门S7-1200 PLC通信并进行数据交换

前言 在现代工业自动化领域&#xff0c;OPC UA&#xff08;开放性生产控制和统一架构&#xff09;是一种广泛应用的通信协议。本文将以通俗易懂的方式解释OPC UA的含义和作用&#xff0c;帮助读者更好地理解这一概念。 一、OPC UA的定义 OPC UA全称为“开放性生产控制和统一…

bgp--大AS分小AS

最后效果:r1能ping通r8,r4路由表有r1-r8环回,r4bgp路由表已优化 代码; [r1] ospf 1 router-id 1.1.1.1 area 0.0.0.0 network 1.1.1.1 0.0.0.0 network 12.1.1.1 0.0.0.0 bgp 64512 router-id 1.1.1.1 confederation id …

湖(岛屿)

from book&#xff1a;挑战程序设计竞赛

亿尚网:时尚电商告别红利时代回归常态未来将何去何从?

随着互联网技术的不断发展和普及&#xff0c;时尚电商行业在过去的十年里迅猛的增长&#xff0c;经历了前所未有的繁荣。然而近年来这个行业似乎已经迎来了一个转折点。曾经的高速增长和巨大利润已经逐渐消失&#xff0c;取而代之的是日益激烈的竞争和微薄的利润空间。这一切的…

TPU编程竞赛系列|第八届集创赛“算能杯“报名开启!

近日&#xff0c;第八届全国大学生集成电路创新创业大赛正式开幕&#xff0c;"算能杯"以 基于TPU处理器的边缘计算系统设计 为赛题&#xff0c;围绕算能提供的多款TPU硬件&#xff0c;展开软硬件协同设计&#xff0c;创新开发算法及探索新兴应用。我们诚邀全国高校的…

三极管这个功能比“放大”还常用?

同学们大家好&#xff0c;今天我们继续学习杨欣的《电子设计从零开始》&#xff0c;这本书从基本原理出发&#xff0c;知识点遍及无线电通讯、仪器设计、三极管电路、集成电路、传感器、数字电路基础、单片机及应用实例&#xff0c;可以说是全面系统地介绍了电子设计所需的知识…

杜卡迪Panigale v4 SP2、Street Fighter v4 SP正式发布,购车送GP观赛

最新款杜卡迪的Panigale v4 SP2、Street Fighter v4 SP国内正式上市&#xff0c;售价分别是382500元和310500元&#xff0c;Panigale售价比老款降低了2.55万元&#xff0c;而街霸的SP版则是国内首次上市。 SP版一直都是杜卡迪的限量款&#xff0c;标榜着高性能、高配置&#xf…

运放【之噪声】

电流噪声和电压噪声 我们一般评估噪声&#xff0c;还看对输出端噪声电压的贡献&#xff0c;因为电流乘以电阻等于电压&#xff0c;因此&#xff0c;最终的噪声大小还跟电路中电阻的取值有很大关系。显然&#xff0c;电阻越大&#xff0c;那么噪声电压就越大。反之电阻越小&…