wacchoz’s note

プログラミングとか数学について

【PTAM(1/3)】 PTAMコンパイル

PTAMを入れたパソコンがぶっ壊れてからだいぶ長い時間がたつが、超久々に再度コンパイルしてみた。
前回やったときは資料も少なくて苦労して丸1日かかりました。

今からやる人も少ないだろうが、備忘録として残しておく。

今回はこのページを参考に。

マーカレスAR(PTAM)のソースコードを動かしてみた(WindowsXP VisualC++) | happymeme

コンパイル環境:
   Windows 7 (64bit), Visual Studio 2005


①PTAM(http://www.robots.ox.ac.uk/~gk/PTAM/)
-PTAM.zipをダウンロード。
-C:\PTAMに解凍。
-README.txtを熟読。
-C:\PTAM\includeとC:\PTAM\libフォルダを作っておく。

Lapack and BLAS(http://www.fi.muni.cz/~xsvobod2/misc/lapack/)
-lapack-MT-release.zipとheaders.tar.gzの2ファイルをダウンロード。
-headersの中のblaslapackは丸ごと、C:PTAM\includeへ
-lapack-MT-releaseを解凍してできた2つのlibファイルを、C:\PTAM\libへ。
-2つのdllファイルをC:\PTAM\Releaseへ。

③pthreads(http://sourceware.org/pthreads-win32/)
-pthreads-w32-2-9-1-release.zipをダウンロード。
-\Pre-built.2\include内の3つのヘッダファイルをC:\PTAM\inclueへ。
-\Pre-build.2\lib内の3つのlibファイルを、C:\PTAM\libへ。
-\Pre-build.2\dll内のdllファイルを、C:\PTAM\Releaseへ。

④GLEW(http://glew.sourceforge.net/)
-glew-1.9.0-win32.zipをダウンロード。
-include内のGLフォルダを丸ごとC:\PTAM\includeへ。
-lib内の4つのlibファイルをC:\PTAM\libへ。
-bin内のglew32.dllをC:\PTAM\Releaseへ。

⑤CMU1394 camera driver(http://www.cs.cmu.edu/~iwan/1394/)
-1394camera646_src.zipをダウンロード。
-ソリューションを開き、1394cameraをReleaseビルド。
-生成された1394camera.dllをC:\PTAM\Releaseへ。
-生成された1394camera.libをC:\PTAM\libへ。
-1394camera内のすべてのヘッダファイルをC:\PTAM\includeへ。

⑥libjpeg for win32(http://gnuwin32.sourceforge.net/packages/jpeg.htm)
-jpeg-6b-4.exeをダウンロード。
-普通にインストール。インストール場所はとりあえずデフォルトのまま。

CVSでLibCVD、TooN、GVars3をダウンロード。
(記憶ではTooNがかなりバージョンにシビアだったかと。必ずこの方法をとること。)
-CygwinなどCVSを使える環境をそろえる。
-以下のコマンドでファイルをダウンロード。
# export CVS_RSH=ssh
# cvs -z3 -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/toon co -D "Mon May 11 16:29:26 BST 2009" TooN
# cvs -z3 -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/libcvd co -D "Mon May 11 16:29:26 BST 2009" libcvd
# cvs -z3 -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/libcvd co -D "Mon May 11 16:29:26 BST 2009" gvars3

⑧LibCVD
-build内のソリューションを開きReleaseビルド。
 この際にC:\PTAM\includeとC:\Program Files (x86)\GnuWin32\includeにインクルードパスを通しておく。
-libcvd.libをC:\PTAM\libへ。
-cvdフォルダを丸ごとC:\PTAM\includeへ。

⑨Toon
-フォルダごと丸ごとC:\PTAM\includeへ。

fltk(http://www.fltk.org/)
README.txtには触れられていないのだが、fltkが必要。
-fltk-2.0.x-alpha-r9296.tar.gzをダウンロード(必ず2.0系をダウンロードのこと)
-fltkフォルダを丸ごとC:\PTAM\includeへ。

⑩gvars3
-build内のソリューションを開きReleaseビルド。
 (インクルードパスにC:\PTAM\includeを通しておく。)
-config.hが存在しないエラーが出るため、config.h.inをconfig.hにリネーム。
-gvars3.hの261行目でエラーが出るので、

http://written.4403.biz/archives/2009/05/vs2008-artoolkit-ptam.html

の通り、以下のように変更。

template<class T> static T& get(const std::string& name, const T& default_val=T(), int flags=0);

-生成したgvars3.libをC:\PTAM\libへ。
-gvars3フォルダは丸ごとC:\PTAM\includeへ。


⑪PTAM
-\Build\Win32内の4つのファイルをC:\PTAMへ。
-ソリューションを開き。C:\PTAM\includeにパスを通しビルド。
-blas_win32.lib、lapack_win32.libが無いとエラーが出るので、リンクするファイルをblas_win32_MT.lib、lapack_win32_MT.libに変更。

これでビルドできます。

⑫実行
-C:\PTAM\Releaseにdllがあることを確認した上でCameraCalibrator.exeを実行。
 ここでdllが見つからないというエラーが出た場合は、該当ファイルを確認して下さい。

Webカメラの使用
-ここからPTAM_webcam.zipをダウンロード

http://kougaku-navi.net/backyard/index.html
-readmeの通りにやりましょう。
-ewclibはver1.2を使用。
-ビルドするとdshow.hが無いとエラーが出たので、とりあえず手持ちのDirectX9(Summer 2003)のCD-ROMのインストールをしようと思ったが、Windows7にはインストールさせてくれないようなので、手動コピーしてパスを通す。
-error C2146: 構文エラー : ';' が、識別子 'PVOID64' の前に必要です。
 のエラーが出たら、PlatformSDKのインクルード優先度を上に持っていく。

⑭実行
-*.cfgファイルを全てC:\PTAM\Releaseへ。
-CameraCalibratorを実行しcalib_pattern.pdfを印刷したものをカメラに写し、GrabFrameを押します。角度を変えて何度か繰り返します。
-Optimizeを押す
-Save
-終了

-PTAMを実行
-Spacebarを押して、カメラを「平行」に移動し、再びSpacebarを押す
 (手を中心に回転するのではなく平行移動です)
-グリッドが表示されれば成功。Draw AR Onを押せば目玉が表示されます。


ね、簡単でしょ!

f:id:wacchoz:20181106224325j:plain