OpenCV

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索
OpenCV
開発元 Intel, Willow Garage, Itseez
最新版 3.1 / 2015年12月21日(45日前) (2015-12-21
最新評価版 3.0 RC1 / 2015年4月24日(9か月前) (2015-04-24
対応OS Windows, Linux, FreeBSD, Mac OS X, AndroidiOS
プラットフォーム クロスプラットフォーム
対応言語 C/C++JavaPython
種別 ライブラリ
ライセンス BSDライセンス
公式サイト opencv.org
テンプレートを表示

OpenCV(オープンシーヴィ、英語: Open Source Computer Vision Library)とはインテルが開発・公開したオープンソースコンピュータビジョン向けライブラリ[1]。 2009年にWillow Garage(ウィロー・ガレージ)に開発が移管された後、2015年現在はItseezがメンテナンスを行なっている[2]

概要[編集]

画像処理・画像解析および機械学習等の機能を持つC/C++JavaPythonMATLAB用ライブラリ[3]プラットフォームとしてMac OS XFreeBSD等全てのPOSIXに準拠したUnix系OSLinuxWindowsAndroidiOS等をサポートしている。

歴史[編集]

1999年にプロジェクト開始。最初のアルファ版が公開されたのは、国際会議CVPR 2000 (IEEE Conference on Computer Vision and Pattern Recognition 2000) である。2001年から2005年の間に5つのベータ版がリリースされた。1.0版がリリースされたのは2006年。

2008年にWillow Garageによるサポートを受け、開発状況が再び活発になった。2009年10月に2回目のメジャーバージョンアップが実施され、2.0版がリリースされた。OpenCV 2.4.4以降ではJavaが公式にサポートされている[4]。OpenCV 2.x系列は2015年2月にリリースされた2.4.11が最後となっている[5]

2015年6月に3回目のメジャーバージョンアップとしてOpenCV 3.0が正式リリースされた。OpenCV 3.0では従来のC言語関数形式のインターフェイスはレガシーAPI扱いとなりメンテナンスが終了しているため、代わりにC++ APIを使うことが推奨されている[6]。2015年12月にリリースされたOpenCV 3.1では、Google Summer of Code 2015の成果物の取り込みなど、多数の機能が追加されている[7]

機能[編集]

実装分野は次の通り。

Windows版ではカメラ入力とリンクさせたい場合などでDirectX SDKが必要になることがある[疑問点 ]

OpenCV 2.1[8]SSE拡張命令を使用した最適化コードが実装されている。OpenCV 3.0でIntel IPPのサブセットがIPPCVとして寄贈され、デフォルトで使用されるようになった[9]

OpenCV 2.2[10]CUDAを使ったアクセラレータであるgpuモジュール、OpenCV 2.4.3[11]OpenCLを使ったアクセラレータであるoclモジュールが追加された。gpuモジュールを有効にするためには、OpenCVをWITH_CUDA=ON構成でビルドする必要がある[12]。また、oclモジュールを有効にするためには、OpenCVをWITH_OPENCL=ON構成でビルドする必要がある[13]。なおOpenCV 2.4.11時点で、公式のWindows用ビルド済みバイナリではCUDAは有効にされていないが、OpenCLは有効にされている。またgpuモジュールおよびoclモジュールはともに、従来のCPUベースのOpenCV機能と比べて、対応するチャンネルフォーマットに関して制約がある。そのほか、gpuモジュールを使用するためには、CUDAに対応したNVIDIAGPUを、そしてoclモジュールを使用するためには、OpenCL 1.1に対応したハードウェアを用意する必要がある。

なお、OpenCV 3.0ではgpuモジュールはcudaモジュールに改称され、また独立したoclモジュールは廃止されてOpenCVの各モジュールに透過API (Transparent API, T-API) として分散・融合されている[14]。OpenCV 3.0にはOpenCLの相互運用を可能とするラッパーAPIも用意されており、OpenCL-C言語でカスタムカーネルを記述できるほか、OpenCL 1.2サポートを有効にしてOpenCVをビルドすることで、OpenCL 1.2対応のプラットフォームおよびデバイス上でOpenCL 1.2の機能(カーネルの分割コンパイル&リンクなど)を使えるようになる[15]。また、オプションとしてOpenCL 2.0もしくはAMD (HSA英語版) 拡張のShared Virtual Memoryもサポートしている[16]

各種言語バインディング(ラッパー)[編集]

公式に提供されているOpenCV APIとして、C/C++用インターフェイスのほか、Java、Python、MATLABバインディングが存在するが、そのほかにも非公式の各種言語向けのラッパーが存在する。

  • Java用ラッパー
    • JavaCV - OpenCV, FFmpeg, libdc1394, PGR FlyCapture, OpenKinect, videoInput, ARToolKitPlus のラッパー。バージョン1.0でOpenCV 3.0に対応。GPL v2ライセンスとApacheライセンスに対応。

関連項目[編集]

参照[編集]

[ヘルプ]

外部リンク[編集]