opencv对图像是软解码_针对opencv imdecode 解码性能低的解决方案--libjpeg-turbo

opencv 对JPEG的解码,其内部实质上是基于第三方库libjpeg进行解码的。但是libjpeg本身的性能并不是很快。经测试对一张2336x4160分辨率的jpg文件进行解码,在android 环境下使用opencv imdecode 解码耗时居然有700+ms,这对于一些高性能的应用是不可取的。本文主要讲如何使用libjpeg-turbo 对JPEG 数据流进行解码,并转换成opencv cv::Mat结构。

对于如何在NDK下使用编译好的so库,在前几篇的文章都有提到,包括libjpeg-turbo 库的编译,调用等等。(不明白的同学可以参考前两篇文章)

那就直接贴代码吧:

jpeg2Mat.hpp

#include "include/turbojpeg.h"

#include

#include

#include

#include

/**

* decode JPEG format to XXX format

* @param pJpegData

* @param JpegdataSize

* @param convrt_flag

* "RGB" - see TJPF_RGB

* "BGR" - see TJPF_BGR

* ...

* see all support format at enum TJPF

*/

std::tuple,uint64_t,uint64_t,uint64_t> decodeJpeg2X(uint8_t* pJpegData,uint64_t JpegdataSize,const char* convrt_flag)

{

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值