我在让 OpenCV 1.1 加载英特尔的集成性能基元 (IPP) 7.1 版时遇到了一些麻烦。
我的旧 Open CV 1.1 代码最初是在另一台旧的 Windows XP 机器上与 IPP 6.1 一起使用的。出于不重要的原因,我现在想在带有英特尔 IPP 7.1的全新 Windows 7 机器上使用它,它是Intel Composer XE 2013的一部分。英特尔的文档建议我必须更改 cxswitcher.c 中的三行以让旧的 OpenCV 代码找到新的英特尔 IPP,即我应该更新这些行:
static const char* ipp_sfx_ia32[] = { "-6.1", "-6.0", "-5.3", "-5.2", "-5.1", "", 0 };
static const char* ipp_sfx_ia64[] = { "64-6.1", "64-6.0", "64-5.3", "64-5.2", "64-5.1", "64", 0 };
static const char* ipp_sfx_em64t[] = { "em64t-6.1", "em64t-6.0", "em64t-5.3", "em64t-5.2", "em64t-5.1", "em64t", 0 };
我这样做是为了让它们现在包含版本号为“7.1”的字符串,尽可能地匹配模式:
static const char* ipp_sfx_ia32[] = { "-7.1", "-6.1", "-6.0", "-5.3", "-5.2", "-5.1", "", 0 };
static const char* ipp_sfx_ia64[] = {"64-7.1", "64-6.1", "64-6.0", "64-5.3", "64-5.2", "64-5.1", "64", 0 };
static const char* ipp_sfx_em64t[] = { "em64t-7.1","em64t-6.1", "em64t-6.0", "em64t-5.3", "em64t-5.2", "em64t-5.1", "em64t", 0 };
我已经重新编译并将以下目录添加到我的路径中:
C:\Program Files (x86)\Intel\Composer XE 2013\redist\intel64\ipp
C:\Program Files (x86)\Intel\Composer XE 2013\redist\intel32\ipp
但是,当我运行包含该cvGetModuleInfo()
函数的示例代码时,我的代码无法加载 IPP dll,我得到以下输出:
NumUploadedFunction = 0
opencv_lib = cxcore: 1.1.0,
add_modules =
� 请注意,我已经进行了一些其他测试。英特尔的 IPP 演示C:\Program Files (x86)\Intel\Composer XE 2013\ipp\demo\intel64
只有在我将带有 DLL 的目录添加到路径后才能运行,所以这让我认为我的 PATH 设置是正确的。我还确认这个目录实际上是通过在 MSYS 提示符下运行添加到我的 MSYS 命令提示符中的路径中echo $PATH
的。
我怀疑问题出在cxswitcher.c
.
我还应该尝试什么?