スキップしてメイン コンテンツに移動

投稿

ラベル(OpenNI)が付いた投稿を表示しています

OpenCVをCMakeして64bit版OpenNIを使う方法

OpenCVをCMakeでコンパイルするときにWITH_OPENNIオプションを付加することになる。だが64bit版のOpenNI、PrimeSensorを使っているとCMakeでConfigureしたときに、OPENNI_LIB_DIR、OPENNI_PRIME_SENSOR_MODULE_BIN_DIRに値が入らない(何を入力しても空白になってしまう)。 どうやら64bit版を使うにはOpenCVFindOpenNI.cmakeの変更が必要でした。その手順メモとなります。 【環境、バージョン】 Windows7 OpenNI win64 1.5.2.23 PrimeSense win64 5.1.0.41 OpenCV 2.3.1 cmake 2.8.7 x86 【手順】 Where is the source codeに設定してあるフォルダ配下にあるOpenCVFindNI.cmakeを開く。 以下の内容に合わせて二箇所修正する。 修正箇所は Finding OpenNI in windows 64bit の OpenCVFindOpenNI.2.patch を参考にしました。 ■20~21行目 ・修正前 find_file(OPENNI_INCLUDES "XnCppWrapper.h" PATHS $ENV{OPEN_NI_INCLUDE} "/usr/include/ni" "/usr/include/openni" "c:/Program Files/OpenNI/Include" DOC "OpenNI c++ interface header") find_library(OPENNI_LIBRARY "OpenNI" PATHS $ENV{OPEN_NI_LIB} "/usr/lib" "c:/Program Files/OpenNI/Lib" DOC "OpenNI library") ・修正後 if(WIN32) if(NOT (MSVC64 OR MINGW64)) find_file(OPENNI_INCLUDES ...

VisualStudio2010でOpenNIの64bit版使用時の外部参照エラー対策

Kinectハック引き続き。 64bit版で実施している外部参照影響でエラーが発生。解決方法は至極単純なことだったが、なかなか気づかなかった。 (この現象VisualStudioだけでなくて、VisualC++2010Expressでも同様のよう。) Visual Studio 2010でOpenNIのプログラムをコンパイルしようとすると、以下外部参照エラーが発生。 error LNK1120: 外部参照 5 が未解決です。 とのこと。ソースはこんな簡単なのに、エラーは意味不明。 #include "stdafx.h" #include #include #include int main(int argc, char* const argv[]) { xn::Context context; return 0; } Google先生に相談すると、OpenNIのサイトに解答がありました。 You are building your project for Win32 platform; try switching to x64 target - in my case this resolved a similar problem. 要するにWin32用にコンパイルしてるからだめで、x64用でコンパイルしろよって話。言われてみれば当たり前だった。 Microsoftの以下サイトを参考に設定変更。 方法 : Visual C++ プロジェクトを 64 ビット プラットフォーム用に設定する 再度コンパイルすると無事ノーエラーでうまくいきました。