OpenCV 1.1 で Intel の Integrated Performance Primitives (IPP) バージョン 7.1 をロードするのに問題があります。
私の古い Open CV 1.1 コードは、もともと別の古い Windows XP マシンの IPP 6.1 で使用されていました。重要でない理由により、 Intel Composer XE 2013の一部として提供されるIntel の IPP 7.1を搭載した新しい Windows 7 マシンで使用したいと考えています。Intel のドキュメントによると、cxswitcher.c の 3 行を変更して、古い OpenCV コードで新しい Intel 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 =
� 他にもいくつかのテストを行ったことに注意してください。にある Intel の IPP デモC:\Program Files (x86)\Intel\Composer XE 2013\ipp\demo\intel64
は、DLL を含むディレクトリをパスに追加した後にのみ実行できたので、PATH 設定が正しいと思います。また、MSYS プロンプト内から実行して、このディレクトリが MSYS コマンド プロンプトのパスに実際に追加されたことも確認しましたecho $PATH
。
のコードに問題があると思われcxswitcher.c
ます。
他に何を試す必要がありますか?