OpenCVのVizで3次元点群の表示や視点操作ができます。OpenGLみたいなもんです。(OpenGLを内側で呼び出してるみたいですけどね。VTKも使っているみたいです。)
Vizを使いたいけど、.exeでインストールしても入ってないので、自分でCMakeしました。その記録です。
実行環境
- Windows8.1
- Visual Studio 2013
- OpenCV 2.4.10
- PCL1.7.2 (VTK 5.10)
インストール
①ここからWindows版のOpenCV2.4.10(opencv-2.4.10.exe)をインストールしてください。展開したopencvフォルダをC:\opencv2410としてコピペしました。
②中身を見るとbuildとsourceフォルダがあると思います。
C:\opencv2410\build\include\opencv2
の中にvizっていうフォルダが入ってて欲しいんですが、ないと思います。CMakeを使ってインストールしましょう。
③ここから、cmake-3.1.1-win32-x86.exeをダウンロードし、実行します。そして次のように設定します。
Where is the source code: C:/opencv2410/sources
Where to build the binaries: C:/opencv2410/build2
出力はbuildフォルダがすでにあるので、build2としました。
で、Configureを一度押すとずらーって設定が出てくるので、WITH_VTKに✓を入れてください。
もう一度Configureを押すと、VTK_DIRの設定が出てくるのでVTKのフォルダを指定してください。VTKのインストール
※私はPCL1.7.2を使っているので、自動的に
C:/Program Files (x86)/PCL 1.7.2/3rdParty/VTK/lib/vtk-5.10
が自動で選ばれました。PCL1.7.2のインストールはこちら(PCL 1.7.2 All-in-one Installer MSVC2013 Win32)
最後に、GenerateをクリックするとOKです。
④C:/opencv2410/build2の中身を見てみると、OpenCV.slnがあるので開いて、DebugモードとReleaseモードでビルド(Ctrl+Shift+B)してください。(C:\opencv2410\build2\modules\viz\opencv_viz.slnのみビルドしてもいいかもしれませんね)
DebugモードではPython27_d.libでエラーが出ましたがVizに関係ないので無視。Releaseモードでは、成功しました。(3回ビルドした)
C:\opencv2410\build2\binのDebugとReleaseからそれぞれ
- opencv_viz2410d.dll
- opencv_viz2410.dll
をC:\opencv2410\build\x86\vc12\binへコピペしてください。
C:\opencv2410\build2\libのDebugとReleaseからそれぞれ、
- opencv_viz2410d.lib
- opencv_viz2410.lib
をC:\opencv2410\build\x86\vc12\libへコピペしてください。
⑤C:\opencv2410\build\include\opencv2の下に、viz.hppを作成してください。中身はここにあります。
⑥C:\opencv2410\sources\modules\viz\include\opencv2のvizフォルダをC:\opencv2410\build\include\opencv2へフォルダごとコピペしてください。
これで、準備が整いました。
サンプルプログラムの実行
サンプルプログラムはここにあるので、試しにTransformationsをやってみましょう。
①新しいプロジェクトを作成し、ソースをコピペしてください。
追加のインクルードディレクトリとライブラリディレクトリの設定を忘れないでください。
設定例は以下のようになっています。
- 追加のインクルードディレクトリ
$(OPENCV_DIR)\build\include;
- 追加のライブラリディレクトリ
$(OPENCV_DIR)\build\x86\vc12\lib;
システム環境変数の設定も忘れずに。(変更したら再起動!)
Path %OPENCV_DIR%\build\x86\vc12\bin;
OPENCV_DIR C:\opencv2410\
OPENCV_VER 2410
入力ライブラリの設定はopencv_lib.hppをC:\opencv2410\build\includeの下に置き、
#include <opencv_lib.hpp>
で読み込みます。今回、Vizが増えたので、opencv_lib.hppに以下を追記します。
#pragma comment(lib, "opencv_viz" CV_VERSION_STR CV_EXT_STR)
C:\opencv2410\sources\samples\cpp\tutorial_code\viz
からbunny.ply(うさぎの3D点群ファイル)をプロジェクトの下に持ってきます。
プロパティからDebuggingの設定で、引数のGまたはCを入力します。Gは視点がグローバル座標になり、Cはカメラ座標になります。
実行するとこんな感じ。
マウス操作で視点が変更できます。
- ドラッグで回転
- Shift+ドラッグで平行移動
- スクロールボタンでズーム
まとめ
- OpenCVのVizを使って3次元点群(PLYファイル)とカメラ位置の表示ができた
- OpenCV2.4.9もOpenCV3.0Alpha、Betaも同じようにすればできると思う