opencv结合ipp使用的一点东西

时间:2021-12-01 04:04:15

在老版本的opencv中,和ipp的结合使用是采用动态链接的方式,所以有关资料会说用如下代码可以测试是否成功使用了ipp

=======================

Example 3-20. Using cvGetModuleInfo() to check for IPP
char* libraries;
char* modules;
cvGetModuleInfo( 0, &libraries, &modules );
printf(“Libraries: %s/nModules: %s/n”, libraries, modules );
Th e code in Example 3-20 will generate text strings which describe the installed libraries
and modules. Th e output might look like this:
Libraries cxcore: 1.0.0
Modules: ippcv20.dll, ippi20.dll, ipps20.dll, ippvm20.dll

=======================

 

但在opencv的新的版本(e.g. 2.1版本)中,不是采用动态链接,而是采用静态编译的方法,所以如上代码只能得到

Libraries: cxcore: 2.1.0
Modules:
也就是啥也显示不了。(参考:http://software.intel.com/en-us/forums/showthread.php?t=73742&o=d&s=lr)

 

所以要看是否用了ipp,其实比较简单,可以用ultraedt看生成的cxcore210.dll里头是否有ipp的函数,搜索ipp会有:

ippsDFTGetBufSize_C_64fc等带ipp前缀的,说明是有ipp的,否则就是没有的。

 

 

===========

另外,用ipp请注意,用了 ipp和没用可能导致得到的结果不一样。比如对颜色空间转换

cvtColor(src_img, hsvImg, CV_BGR2Luv);

用ipp和不用ipp结果并不是完全一样的。可能底层用的算法不太一样。