当前位置: 首页 > ds >正文

opencv + jpeg_turbo(启用SIMD加速)

背景

opencv的imread+imwrite耗时过大
一张5M的图片读用了140ms,写一张1.7M的图片用149ms

  1. 平台:mingw64编译Windows程序
  2. 版本:opencv4.5.4

加速方案

  1. opencv启用openmp
  2. opencv启用jpeg_turbo
  3. jpeg_turbo启动SIMD加速

下载jpeg_turbo源码

opencv源码自带的jpeg_turbo源码不支持SIMD配置的,需要自己重新下载源码

版本确定:

opencv-4.5.4\3rdparty\libjpeg-turbo\CMakeLists.txt
set(VERSION_MAJOR 2)
set(VERSION_MINOR 1)
set(VERSION_REVISION 0)
所以opnecv4.5.4使用的是libjpeg-turbo v2.1.0

下载源码

git clone https://github.com/libjpeg-turbo/libjpeg-turbo.git -b 2.1.0

编译

  1. libjpeg-turbo的SIMD加速依赖NASM处理汇编代码
# 在MSYS2终端中执行
pacman -S nasm
  1. 配置CMake参数
mkdir build_mingw64
cd build_mingw64cmake \-G "MSYS Makefiles" \-DCMAKE_INSTALL_PREFIX=$(pwd)/output_mingw64 \-DWITH_SIMD=ON \-DENABLE_SHARED=OFF \-DENABLE_STATIC=ON \-DCMAKE_BUILD_TYPE=Release \-DWITH_JPEG8=ON \-DCMAKE_ASM_NASM_COMPILER="D:/msys64/usr/bin/nasm.exe" \..make -j8
make install

导入到opencv编译

mkdir build
cd buildcmake \
-DBUILD_SHARED_LIBS=OFF \
-DWITH_OPENMP=ON \          # 启用openmp
#。。。。你的其它配置
-DWITH_JPEG=ON \            # 启用JPEG支持
-DBUILD_JPEG=OFF \          # 禁用OpenCV内置JPEG编译
-DJPEG_INCLUDE_DIR="D:/xxx/libjpeg-turbo/build_mingw64/output_mingw64/include" \   # 指定外部libjpeg-turbo的头文件路径
-DJPEG_LIBRARY="D:/xxx/libjpeg-turbo/build_mingw64/output_mingw64/lib/libjpeg.a" \ # 指定外部libjpeg-turbo的静态库路径
-DCPU_BASELINE=AVX2 \
-DBUILD_OPENJPEG=OFF \
-DWITH_OPENJPEG=OFF \
-G "MSYS Makefiles" ..make
make install

最终效果

读图片,5M jpg格式,原本140 ms,现在92 ms
写图片,1.7M jpg格式,原本149 ms,现在41 ms

http://www.xdnf.cn/news/9601.html

相关文章:

  • Flutter3.22适配运行鸿蒙系统问题记录
  • 算力卡上部署OCR文本识别服务与测试
  • w~视觉~合集6
  • 【组件】跳动的图标 动画
  • 实验设计与分析(第6版,Montgomery)第4章随机化区组,拉丁方, 及有关设计4.5节思考题4.1~4.4 R语言解题
  • GRIT:让AI“指着图说话“的新思路
  • get_rga_thread线程和low_camera_venc_thread线程获取低分辨率VENC码流数据
  • ORB-SLAM2学习笔记:ComputeKeyPointsOctTree分析过程记录
  • 【C语言】详解 指针
  • 使用 PySpark 从 Kafka 读取数据流并处理为表
  • 【25软考网工】第九章 网络管理(1)网络管理基础、SNMP
  • 端到端测试最佳实践:从入门到精通的完整指南
  • vue+ts+TinyEditor 是基于 Quill 2.0 开发的富文本编辑器,提供丰富的扩展功能,适用于现代 Web 开发的完整安装使用教程
  • 集成电路制造设备防震基座选型指南:为稳定护航-江苏泊苏系统集成有限公司
  • 手机如何压缩文件为 RAR 格式:详细教程与工具推荐
  • 井喷式增长下的证件缺口:特种设备人才供需矛盾如何破局?
  • 数值积分实验
  • 深入理解计算机科学中的“递归”:原理、应用与优化
  • vue3+Pinia+element-plus 后台管理系统项目实战
  • 安全,稳定可靠的政企即时通讯数字化平台
  • 金山云Q1营收19.7亿元 AI持续释放业务增长新动能
  • 【第2章 绘制】2.13 坐标变换
  • 数据拟合实验
  • IO 中的阻塞、非阻塞、同步、异步及五种IO模型
  • 服务器定时任务查看和编辑
  • SpringBoot Controller接收参数方式
  • Senna代码解读
  • SQLite软件架构与实现源代码浅析
  • 跨平台开发框架electron
  • 【Linux学习笔记】深入理解动静态库本质及其制作