用IPP给OpenCV加速

用IPP给OpenCV加速

因为OpenCV曾由Intel性能基元(IPP)团队主持,而且几个主要开发者都与IPP团队保持着良好的关系,所以OpenCV利用了IPP高度手工优化的代码来实现加速。使用IPP获得的提速是非常显著的。图1-4比较了另外两个视觉库LTI[LTI]和VXL[VXL]与OpenCV以及IPP优化的OpenCV的性能。请注意,性能是OpenCV追求的一个关键目标;它需要实时运行代码的能力。

OpenCV使用优化了的C和C++代码实现。它对IPP不存在任何依赖。但如果安装了IPP,那么OpenCV将会通过自动载入IPP动态链接库来获取IPP的优势,来提升速度。                 【6~7】

 
图1-4:另外两个视觉库(LTI和VXL)与OpenCV(不使用和使用IPP)的四个
不同性能指标的比较:每个指标的四个柱图分别表示四个库的得分,
得分与运行时间成正比;在所有指标中,OpenCV均优于其他的
两个库,且用IPP优化的OpenCV优于没有使用IPP优化的OpenCV
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
IPP(Integrated Performance Primitives)是Intel开发的一套高性能数学和信号处理函数库,可以用于加速图像处理算法。OpenCV库中包含了IPP模块,可以使用IPP库来加速一些OpenCV函数的处理速度。下面是使用IPP模块加速OpenCV函数的一般步骤: 1. 引入IPP库:在代码中引入IPP库头文件,例如: ```c++ #include "ipp.h" ``` 2. 初始化IPP库:在代码中初始化IPP库,例如: ```c++ IppStatus status = ippInit(); if (status != ippStsNoErr) { // 初始化IPP库失败 } ``` 3. 加速OpenCV函数:在代码中使用IPP库函数加速OpenCV函数,例如: ```c++ cv::Mat src, dst; // 加载图像到src中 IppiSize size = { src.cols, src.rows }; IppiWarpAffineParams params = { ... }; // 设置warpAffine参数 IppStatus status = ippiWarpAffine_8u_C3R(src.data, src.step, dst.data, dst.step, size, params, ippBorderRepl); if (status != ippStsNoErr) { // warpAffine处理失败 } // 处理dst图像 ``` 在这个示例中,ippiWarpAffine_8u_C3R函数是IPP库中的一个图像变换函数,可以替代OpenCV库中的warpAffine函数。通过使用IPP库的函数,可以加速图像变换的处理速度。 需要注意的是,并不是所有的OpenCV函数都可以使用IPP模块加速。一些OpenCV函数已经使用了其他优化模块进行了优化,或者不适合使用IPP模块加速。在使用IPP模块加速OpenCV函数之前,需要仔细考虑是否适合使用IPP模块,并进行性能测试以验证加速效果。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值