在老版本的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
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:
所以要看是否用了ipp,其实比较简单,可以用ultraedt看生成的cxcore210.dll里头是否有ipp的函数,搜索ipp会有:
ippsDFTGetBufSize_C_64fc等带ipp前缀的,说明是有ipp的,否则就是没有的。
===========
另外,用ipp请注意,用了 ipp和没用可能导致得到的结果不一样。比如对颜色空间转换
cvtColor(src_img, hsvImg, CV_BGR2Luv);
用ipp和不用ipp结果并不是完全一样的。可能底层用的算法不太一样。