在Linux上用IPP 7.1编译OpenCV 2.4.5

我试图在Ubuntu(12.10)上使用TBB和IPP 7.1编译opencv 2.4.5。 我正在使用cmake来configurationmakefile,使用这个命令:

cmake -D WITH_TBB=ON -D WITH_IPP=ON ../opencv-2.4.5 

先前设置了IPPROOTvariables:

 setenv IPPROOT=/opt/intel/ipp/ 

(该文档指出USE_IPP代替WITH_IPP,但是这是不正确的,因为CMake打印出它忽略了开关。)cmake实用程序似乎识别IPP库并打印出来:

 ... -- found IPP: 7.1.1 [7.1.1] -- at: /opt/intel/composerxe/ipp -- IPP libs: libippvm_l.a;libippcc_l.a;libippcv_l.a;libippi_l.a;libipps_l.a;libippcore_l.a ... -- Other third-party libraries: -- Use IPP: 7.1.1 [7.1.1] -- at: /opt/intel/composerxe/ipp 

Cmake成功了,build(make)也成功了。 问题是输出文件没有以任何方式链接到IPP,实际上与没有IPP构build的一样,使用

 cmake -D WITH_TBB=ON ../opencv-2.4.5 

(IPP默认closures)。

有没有人能够成功地build立OpenCV,以便它实际上利用IPP?

我面临同样的问题:使用启用IPP选项配置opencv,它找到库,编译没有错误,但没有任何反应 – 它没有链接到它。
这是一个ldd结果:

 # ldd /usr/local/opencv-246-ipp/lib/libopencv_core.so linux-vdso.so.1 => (0x00007fff563ab000) libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f70dee83000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f70dec66000) librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f70dea5d000) libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f70de75a000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f70de455000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f70de23e000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f70dde76000) /lib64/ld-linux-x86-64.so.2 (0x00007f70dfc55000) 

我以为,因为静态链接,但它不会影响结果,我有相同的执行时间(有和没有IPP选项)。

但!

我已经建立了最新的(github)版本的OpenCV对新鲜(8.0)版本的IPP,它的工作原理。

链接:

 otool -L /usr/local/opencv/lib/libopencv_core.3.0.0.dylib /usr/local/opencv/lib/libopencv_core.3.0.0.dylib: lib/libopencv_core.3.0.dylib (compatibility version 3.0.0, current version 3.0.0) ./libippvm-8.0.dylib (compatibility version 8.0.0, current version 8.0.0) ./libippcc-8.0.dylib (compatibility version 8.0.0, current version 8.0.0) ./libippcv-8.0.dylib (compatibility version 8.0.0, current version 8.0.0) ./libippi-8.0.dylib (compatibility version 8.0.0, current version 8.0.0) ./libipps-8.0.dylib (compatibility version 8.0.0, current version 8.0.0) ./libippcore-8.0.dylib (compatibility version 8.0.0, current version 8.0.0) /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 60.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1) 

但是它仍然不会影响结果(在我的情况下),调整大小操作的执行时间不会改变。

希望它会帮助别人。