最終更新:2011-08-12 (金) 14:00:36 (4638d)  

OpenCV 2.1
Top / OpenCV 2.1

April, 2010

OpenCV 2.1 は,基本的には OpenCV 2.0 の安定化版ですが,新機能もいくつか追加されています.

CMake

  • source - C:/OpenCV2.1
  • build - C:/OpenCV2.1/build
  • TBB_INCLUDE_DIR - C:/dev/tbb30_20100406oss/include
  • TBB_LIB_DIR - C:/dev/tbb30_20100406oss/lib/ia32/vc10

インストール

Windows

  • vs2008のを入れた場合はビルドする必要はない。

Ubuntu

Mac OS X

Visual Studio全体に対しての設定

Visual Studio 2008

  • ツール > オプション > プロジェクトおよびソリューション > VC++ディレクトリ
  • インクルードファイル C:\OpenCV2.1\include\opencv
  • ライブラリファイル C:\OpenCV2.1\lib

Visual Studio 2010

  • 表示 > その他のウィンドウ > プロパティ マネージャー >右ペインの Microsoft.Cpp.Win32.userを編集

Visual Studio 2008でプロジェクト作ってコンパイルするときの設定

ライブラリの宣言

  • 「プロジェクト」 > 「のプロパティ」 > 「構成プロパティ」 > 「リンカ」 > 「入力」において, 「追加の依存ファイル」に以下を追加します.
  • Debugのときは,cv210d.lib cxcore210d.lib cvaux210d.lib highgui210d.lib
  • Releaseのときは,cv210.lib cxcore210.lib cvaux210.lib highgui210.lib
  • もしくは
#ifdef _DEBUG
 	#pragma comment( lib, "cv210d.lib" )
	#pragma comment( lib, "cxcore210d.lib" ) 
	#pragma comment( lib, "cvaux210d.lib" )
	#pragma comment( lib, "highgui210d.lib" )
#else
	#pragma comment( lib, "cv210.lib" )
	#pragma comment( lib, "cxcore210.lib" )
	#pragma comment( lib, "cvaux210.lib" )
	#pragma comment( lib, "highgui210.lib" )
#endif

Visual Studio 2010でプロジェクト作ってコンパイルするときの設定

一般的な変更:

  • OpenCV では,古いlibc-形式の方法を止め,代わりに例外を利用するようにしました.
    • つまり,cvGetErrStatus?() (現在は,常に0を返します)でエラーコードを調べる代わりに,C++ の try-catch 文の内部でOpenCV の関数を呼べば良いだけです.
    • 今のところ,cv::Exception は,std::exception から派生しています.
  • SWIG-ベースの Python ラッパーは,まだ含まれていますが,デフォルトではビルドされません.
    • 一般的には新しいラッパーを利用した方が良いでしょう.
    • python サンプルは,James Bowman によって新しい形式のPython ラッパーを利用するように書き換えられています.また,元のサンプル自体も James の手によるものです.
  • OpenCV は,MacOSX 10.6 および Windows の 64-bit 版でビルド,動作可能です
    • (以下の highgui と 既知の問題 のセクションを参照してください).
  • Windows では,MSVC 2008 と mingw64 で動作することが確認されています.
  • 理論的には,OpenCV はホストCPUを自動的に判断し,
    • SSE/SSE2/... 命令が有効ならば,それを利用するようにすることができます.
    • つまり,CMake で WITH_SSE* フラグを利用するのは,より安全のためだけです.
    • しかし,最大のポータビリティを望むならば,WITH_SSE と WITH_SSE2 をON に,
    • SSE* を OFF のままにしておくことがお勧めです.
    • WITH_SSE3, WITH_SSSE3, WITH_SSE4_1 を利用した場合,
    • Intel の古い Penryn コアやAMDチップと互換性の無いコードを生成する可能性があるからです.
  • Jose Luis Blanco により,実験的な "static" OpenCV のCmake コンフィギュレーションが提供されました.
    • OpenCV を静的ライブラリとしてビルドするには,CMake に "BUILD_SHARED_LIBS=OFF" を渡してください.

新機能,特徴:

cxcore, cv, cvaux:

  • Grabcut (http://en.wikipedia.org/wiki/GrabCut) 画像セグメンテーションアルゴリズムが実装されました.
    • opencv/samples/c/grabcut.cpp を参照してください.
  • 改良された 新しい one-way ディスクリプタが追加されました.
    • opencv/samples/c/one_way_sample.cpp を参照してください.
  • 我々が SGBM(semi-global block matching) と呼ぶ
    • H. Hirschmuller 準大域的ステレオマッチングアルゴリズムが加わりました.
    • Kolmogorov の グラフカットベースのアルゴリズムよりもはるかに高速で,
    • 大抵はブロックマッチングの StereoBM アルゴリズムよりも良い結果になります.
    • opencv/samples/c/stereo_matching.cpp を参照してください.
  • K. Konolige による StereoBM ステレオ対応点探索アルゴリズムが大きく改善されました:
    • left-right 一貫性チェック,speckle フィルタリングが加えられ,パフォーマンスが(約20%)向上しています.
  • ステレオ平行化変換後(stereoRectify/cvStereoRectify? を参照)の画像の可視領域をコントロールすることが可能になりました.
    • また,視差を計算する領域(CvStereoBMState::roi1, roi2; getValidDisparityROI)が制限可能になりました.
  • 混合ガウス分布に基づく背景差分アルゴリズムが書き直され,速度と精度が向上しました.
    • C++ インタフェース BackgroundSubtractor? が提供されています.
    • 学習された背景モデルを利用して,モデルを更新せずに前景のセグメンテーションを行うことも可能です.
      • opencv/samples/c/bgfg_segm.cpp を参照してください.

highgui:

   * MacOSX:OpenCVは,Carbon と Quicktime に加えて Cocoa と QTKit バックエンドを含みます.
     なので,OpenCV を 64-bit ライブラリとしてビルドできます.これは Andre Cohen と Nicolas Butko のおかげです.
     しかし,このバックエンドはα版であることに注意してください.
     クラッシュやメモリリークの可能性があるので,単に試してみたい以上の目的に使うならば,
     今のところ,Carbon と Quicktime を利用する方が良いかもしれません.
     その場合,CMake に USE_CARBON=ON と USE_QUICKTIME=ON を渡して
     OpenCV を 32-bit モードでビルドしてください(つまり,Xcode で i386アーキテクチャを選択します).
   * Windows:MSVC 2008 と mingw64 を用いて,OpenCV を 64-bit モードでビルドできます.
   * (Yannick Verdie によって)フルスクリーン機能が追加されました.
     全画面表示を行うには cvSetWindowProperty(window_name, CV_WINDOW_FULLSCREEN, 1) を呼んでください.
     これは,Cocoa バインディングではまだサポートされていません.
   * (Stefano Fabri によって)gstreamer バックエンドが大きく改善されました.

新しいテスト:

 - 数ダース分のテストが追加され,今までの多くのテストも OpenCV の正確さを徹底的に検証するように書き直されました.
   その結果,いまいちな値だったテストカバレッジが,非常に良いものになりました(特に,cxcore と cv).
   Module                 OpenCV 2.0 coverage                 OpenCV 2.1
                            (関数/条件)                      (関数/条件)
   cxcore                      65/54                            91/73
   cv                          52/46                            80/68
   ml                          66/47                            73/52
   highgui                     17/3                             54/27
   cvaux                        0/0                              5/12
 -  Python で書かれた多くの回帰テストが加わりました.
    これは,OpenCV と 新しい形式のバインディングの両方をチェックします.
 - テストデータを別のリポジトリに移しました:https://code.ros.org/svn/opencv/trunk/opencv_extra/testdata.
   これはパッケージには含まれないので,cvtest や mltest の幾つかは,データが無いという結果を表示します.
   このデータをダウンロードして,次の様に cvtest を実行することもできます:
   ./cvtest -d <path_to_opencv_extra>/testdata/cv
   ./mltest -d <path_to_opencv_extra>/testdata/ml
 - テストエンジンが改良されました:
   -tn, -seed, -r フラグが追加されました.
   また,失敗したテストの詳細が,コンソール上に表示されます.

バグ修正:

 - 約 200 個のバグが修正されました.
   修正済,未修正のバグのリストに関しては,以下を参照してください:
   https://code.ros.org/trac/opencv/report
   http://sourceforge.net/tracker/?group_id=22870&atid=376677   

既知の問題点,制限:

 - 異なるプラットフォームで,時々テストが失敗することがあります.
   おそらくほとんどは,(テストを実行する度にランダムに生成される様な)非常に特殊なテストケースが原因です.
   このテストケースは,関数やテストによって適切に扱われません.
   この内幾つかは,再現,報告されています:
   https://code.ros.org/trac/opencv/ticket/29
   https://code.ros.org/trac/opencv/ticket/113
   https://code.ros.org/trac/opencv/ticket/114  
 - 新しい Python バインディングは,新しい C++ や MLL の機能に対するインタフェースを持っていません.
   これについては,いずれかの OpenCV リリースで取り組まれる予定です.
 - ドキュメントは,未だ完全ではなく,フォーマットや文法上の,または意味的なエラーが存在します.
   我々は,これを定期的に改良していきます.
   最新のオンラインドキュメントをチェックしてみてください:
   http://opencv.willowgarage.com/documentation/c/index.html (C)
   http://opencv.willowgarage.com/documentation/cpp/index.html (C++)
   http://opencv.willowgarage.com/documentation/python/index.html (Python)
 - 修正中のバグもチェックしてみてください:
   https://code.ros.org/trac/opencv/report
   http://sourceforge.net/tracker/?group_id=22870&atid=376677

参考

.NET向け

関連