I am evaluating IPP 5.3.3.082 in conjunction with opencv 1.0. I was using opencv before and I have installed IPP now. Iwrote asmall Cprogram for opencv based on some stuff I saw on the web and I tried to check if IPP is getting loaded but it appears that it is not. The print out shows I am loading the opencv libraries but no IPP libraries. I found out that the problem might be related to a old cxswitcher.cpp that was not updated for 5.3 and I got the new one but it did not make any difference. Here is the code snippet I am using - any ideas?
const char* opencv_info= 0;
const char* plugin_info= 0;
cvGetModuleInfo(0, &opencv_info, &plugin_info);
if (plugin_info != 0 && strstr(plugin_info,"ipp")!=0)
printf("IPP is used plugin_info=%s opencv=%s ", plugin_info, opencv_info);
printf("Opencv is used %s ", opencv_info);
How can I resolve my problem?
I already tried that workaround. I am using Windows Visual C++ 2003 and I already downloaded the file cxswitcher.cpp (from a windows link) and recompiled the opencv libraries. Unless there is more that, itdid not help. Any other ideas? Thanks
I'm having the same problems (IPP evaluation 5.3 Update 4 for Intel IA 32. Intel Core 2 Duo processor. Windows XP. IDE: MS Visual Studio .NET 2008 Standard Edition).
I exchanged the cxswitcher.cpp by a newer one (as supposed/proposed in another thread), rebuild the OpenCV library and still the following code indicates, that no IPP support is available:
//find out, if IPP is used
int numOptimizedFuncCalls = cvUseOptimized(1);
sprintf(buffer, "numOptimizedFuncCalls = %d", numOptimizedFuncCalls);
const char* plugin_info = 0;
bool ipp_is_used = plugin_info != 0 && strstr(plugin_info,"ipp") != 0;
sprintf(buffer, "is IPP used: %d", ipp_is_used);
numOptimizedFuncCalls = 0
is IPP used: 0
In the system32 folder there are no OpenCV libraries. I've got the OpenCV bin directory as well as the IPP bin directory in my PATH system variable.
Debugging of cxcoretest (part of OpenCV build project) told, that in cvUseOptimized the LoadLibrary call doesn't return a valid handle - even for the ippcv-5.3.dll, which is definitely in the IPP bin directory.
Is there any #define/preprocessor definition I have to add in order to get IPP support?
I reinstalled the IPP evaluation version 5.3.4.087 and now debugging cxcoretest project/application of OpenCV shows, that the IPP *5.3.dlls are loaded at runtime correctly.
Nevertheless my other application (which consists of several OpenCV calls like cvConvertScale, cvResize, cvFilter2D, cvErode, cvFindContours etc.) doesn't load IPP dlls.
My project builds a dll, which is embedded in another host application. Is there anything I have to do for using IPP functions instead of simple OpenCV functions in this case (I still want to call the functions using the OpenCV syntax and OpenCV shall internally choose the IPP implementation)?
Ok, the problem was that the host application couldn't find the IPP dlls (although the IPP bin directory is part of my PATH system variable). I had to start the runtime installer in the IPP installation directory IntelIPP5.3.4.087ia32toolsruntimeinstaller, which copies the dlls into the system32 folder. Now my host application uses the IPP dlls and the output of the previously mentioned code snippet is:
numOptimizedFuncCalls = 384
is IPP used: 1
Hope that helps others as well... (though I still don't understand, why the dlls couldn't be found in first place...)
Ah, I've forgotten: my host application had some OpenCV dlls in its directory and after rebuilding OpenCV I had forgotten to replace them - that's why the host exe used the old OpenCV dlls which didn't know anything about the version "5.3"... so no IPP was used...