OpenCVバージョン3.3.0がついに正式リリースされましたね。
OpenCV 3.3.0
OpenCV 3.3 has been released with greatly improved Deep Learning module and lots of optimizations.
dandelionさんがChange Logsを日本語訳しています↓
https://github.com/atinfinity/lab/wiki/OpenCV-Change-Logs%EF%BC%88%E6%84%8F%E8%A8%B3%EF%BC%89#3.3
ということで、さっそくsfmモジュールのビルドですね!(←しつこい)
結論から言うと、今回ついにビルドに成功しました。決め手はCMAKE_DEBUG_POSTFIX
だった。
これまで何度も挑戦しては失敗してきたのだ…
ビルド
今回もビルド環境はこちら。VC14でx64ビルド。
- Windows 10 Pro
- Visual Studio Community 2015
- CMake 3.8.2
使用した依存ライブラリのバージョンは以下。この順にビルドしていく。
- Eigen 3.3.4
- gflags 2.2.1
- google-glog 0.3.5
- suitesparse-metis-for-windows-1.3.1
- ceres-solver-1.12.0
- VTK-8.0.0
- opencv-3.3.0, opencv_contrib-3.3.0
これまでと同様、こちらの記事を参考にした。↓
http://qiita.com/ChaoticActivity/items/3888e886925ef0f84926
各ライブラリのバージョンが新しくなったことで手間がだいぶ減って楽になった。
Eigen
3.2.10を普通にcmakeして、Visual Studioでバッチビルド(ALL_BUILD, INSTALL)した。
Gflags
gflagsはcmakeで
BUILD_SHARED_LIBS
BUILD_STATIC_LIBS
にチェックを入れ、さらに
CMAKE_DEBUG_POSTFIX
を追加し、Stringパラ―メータ’d’を設定しておいた。
glogもそうだが、前回までこれを設定していなかったのでビルドに失敗していたのだ。デフォルトだと、gflagsとglogはDebugビルドとReleaseビルドで出力されるlibファイル名が同じなので上書きされてしまうのだ。
後はGenerateして、Visual Studioでバッチビルド(ALL_BUILD, INSTALL)した。
Glog
同梱のgoogle-glog.slnファイルは使わず、cmakeを使う。
先ほどビルドしたGflagsはまだここでは指定しない。
Gflagsと同様に、
CMAKE_DEBUG_POSTFIX
を追加し、Stringパラ―メータ’d’を設定してGenerateしてVisual Studioでバッチビルド(ALL_BUILD, INSTALL)した。
suitesparse-metis-for-windows
suitesparse-metis-for-windowsは一部コードを書き換える。
metis/GKlib/gk_arch.h
の61行目から
#ifdef __MSC__ /* MSC does not have rint() function */ #define rint(x) ((int)((x)+0.5)) /* MSC does not have INFINITY defined */ #ifndef INFINITY #define INFINITY FLT_MAX #endif #endif
となっているが、Visual Studio 2015環境でこの定義は不要なのでコメントアウト。(消しちゃっても良いんだけど)
// #ifdef __MSC__ /* MSC does not have rint() function */ // #define rint(x) ((int)((x)+0.5)) /* MSC does not have INFINITY defined */ // #ifndef INFINITY // #define INFINITY FLT_MAX // #endif // #endif
cmakeの設定はデフォルトのままでOK。
Ceres-Solver
CeresSolverは最新の1.13.0ではなく、1.12.0を使った。
ビルドに時間がかかるので、cmakeの設定で不要な
BUILD_EXAMPLES
BUILD_TESTING
のチェックは外しておく。
先ほどビルドしたglog, gflags, suitesparse-metis-for-windowsを指定し、GenerateしてVisual Studioでバッチビルド(ALL_BUILD, INSTALL)した。
VTK
基本はデフォルトのまま、ここを参考に↓
https://gist.github.com/UnaNancyOwen/9d16060714ba9b28f90e#file-vtk8-0-0-md
CMAKE_DEBUG_POSTFIX
に”-gd”を追加した。
OpenCV
cmakeで
OPENCV_EXTRA_MODULES_PATH
にopencv_contrib-3.3.0/modules/
を追加。
WITH_CUDA
はチェックを外しておく。
GenerateしてOpenCV.slnを開いてバッチビルド。
さあ、やっとここへ辿り着いたぞ。
http://qiita.com/ChaoticActivity/items/178d23508b92a09e59ea
疲れた。。。
関連記事
Unity ARKitプラグインサンプルのドキュメントを読む
MFnMeshクラスのsplit関数
機械学習のオープンソースソフトウェアフォーラム『mloss(...
Mayaのシェーディングノードの区分
Iridescence:プロトタイピング向け軽量3D可視化ラ...
Mayaのレンダリング アトリビュート
ZBrushでカスタムUIを設定する
動的なメモリの扱い
3Dスキャンに基づくプロシージャルフェイシャルアニメーション
pythonの機械学習ライブラリ『scikit-learn』
Python.NET:Pythonと.NETを連携させるパッ...
3Dグラフィックスの入門書
池袋パルコで3Dのバーチャルフィッティング『ウェアラブル ク...
法線マップを用意してCanvas上でShadingするサンプ...
OpenCV 3.1とopencv_contribモジュール...
Fast R-CNN:ディープラーニングによる一般物体検出手...
オープンソースの人体モデリングツール『MakeHuman』の...
konashiのサンプルコードを動かしてみた
畳み込みニューラルネットワーク (CNN: Convolut...
Cartographer:オープンソースのSLAMライブラリ
Javaで作られたオープンソースの3DCGレンダラ『Sunf...
Point Cloud Libraryに動画フォーマットが追...
iPhoneアプリ開発 Xcode 5のお作法
MB-Lab:Blenderの人体モデリングアドオン
Swark:コードからアーキテクチャ図を作成できるVSCod...
U-Net:ディープラーニングによるSemantic Seg...
Unityで画面タッチ・ジェスチャ入力を扱う無料Asset『...
OpenCVでiPhone6sのカメラをキャリブレーションす...
BGSLibrary:OpenCVベースの背景差分ライブラリ
定数
BlenderProc:Blenderで機械学習用の画像デー...
TorchStudio:PyTorchのための統合開発環境と...
Iterator
Manim:Pythonで使える数学アニメーションライブラリ
SDカードサイズのコンピューター『Intel Edison』
PyTorch3D:3Dコンピュータービジョンライブラリ
CGAN (Conditional GAN):条件付き敵対的...
Math.NET Numerics:Unityで使える数値計...
Webスクレイピングの勉強会に行ってきた
オープンソースの物理ベースGIレンダラ『appleseed』
立体視を試してみた
OpenCV 3.3.0 contribのsfmモジュールの...
コメント