「OpenCV」の版間の差分
タグ: 差し戻し済み |
|||
136行目: | 136行目: | ||
[[Category:コンピュータビジョン]] |
[[Category:コンピュータビジョン]] |
||
[[Category:オープンソースソフトウェア]] |
[[Category:オープンソースソフトウェア]] |
||
[[Category: |
[[Category:グラフィックソフトウェア]] |
||
[[Category:グラフィックライブラリ]] |
[[Category:グラフィックライブラリ]] |
2021年10月9日 (土) 08:16時点における版
開発元 | インテル、Willow Garage、Itseez |
---|---|
最新版 |
4.5.3
/ 2021年7月19日[1] |
リポジトリ | |
プログラミング 言語 | C++ |
対応OS | Windows, Linux, FreeBSD, macOS, Android, iOS |
プラットフォーム | クロスプラットフォーム |
対応言語 | C/C++、Java、Python |
種別 | ライブラリ |
ライセンス | OpenCV 4.4以前: 三条項BSDライセンス / OpenCV 4.5以降: Apache v2[2] |
公式サイト |
opencv |
OpenCV(オープンシーヴィ、英: Open Source Computer Vision Library)とはインテルが開発・公開したオープンソースのコンピュータビジョン向けライブラリ[3]。2009年にWillow Garage(ウィロー・ガレージ)に開発が移管され、さらにその後Itseezにメンテナンスが移管されたが、2016年5月にインテルがItseezを買収することが発表された[4][5]。
概要
画像処理・画像解析および機械学習等の機能を持つC/C++、Java、Python、MATLAB用ライブラリ[6]。プラットフォームとしてmacOSやFreeBSD等全てのPOSIXに準拠したUnix系OS、Linux、Windows、Android、iOS等をサポートしている。
歴史
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が公式にサポートされている[7]。OpenCV 2.x系列は2018年2月に2.4.13.6がリリースされた後、メンテナンスされていない[1][8][9][10]。
2015年6月に3回目のメジャーバージョンアップとしてOpenCV 3.0が正式リリースされた。OpenCV 3.0では従来のC言語関数形式のインターフェイスはレガシーAPI扱いとなりメンテナンスが終了しているため、代わりにC++ APIを使うことが推奨されている[11]。2015年12月にリリースされたOpenCV 3.1では、Google Summer of Code 2015の成果物の取り込みなど、多数の機能が追加されている[12]。
2018年11月にOpenCV 4.0がリリースされた[13]。C++11規格準拠コンパイラが必須となり、またC言語APIは廃止された。
2021年現在、OpenCV 3.x系列のメンテナンスと4.x系列の開発が続けられている。
機能
実装分野は次の通り。
- 画像処理 (Image Processing)
- 勾配、エッジ、コーナー (Gradients, Edges and Corners)
- サンプリング、補間、幾何変換 (Sampling, Interpolation and Geometrical Transforms)
- モルフォロジー演算 (Morphological Operations)
- フィルタと色変換 (Filters and Color Conversion)
- ピラミッドとその応用 (Pyramids and the Applications)
- 画像分割、領域結合、輪郭検出 (Image Segmentation, Connected Components and Contour Retrieval)
- 画像と形状のモーメント (Image and Contour Moments)
- 特殊な画像変換 (Special Image Transforms)
- ヒストグラム (Histograms)
- マッチング (Matching)
- ラベリング (Labeling) : OpenCV 3.0以降
- 構造解析 (Structural Analysis)
- モーション解析と物体追跡 (Motion Analysis and Object Tracking)
- 背景統計量の累積 (Accumulation of Background Statistics)
- モーションテンプレート (Motion Templates)
- 物体追跡 (Object Tracking)
- オプティカルフロー (Optical Flow)
- 推定器 (Estimators)
- パターン認識 (Pattern Recognition)
- 物体検出 (Object Detection)
- カメラキャリブレーションと3次元再構成 (Camera Calibration and 3D Reconstruction)
- カメラキャリブレーション (Camera Calibration)
- 姿勢推定 (Pose Estimation)
- エピポーラ幾何 (Epipolar Geometry)
- 機械学習
- 単純ベイズ分類器 (Naive Bayes Classifier)
- k近傍法 (K Nearest Neighbors)
- サポートベクターマシン (SVM)
- 決定木 (Decision Trees)
- ブースティング (Boosting)
- Random forest (Random forest)
- EMアルゴリズム (Expectation-Maximization)
- ニューラルネットワーク (Neural Networks)
- ユーザインタフェース
OpenCVの機能はいくつかのライブラリモジュールに分割して実装されている。モノリシックな1ファイル(worldモジュール)にビルドすることも可能であるが[14]、通常は必要なものだけ個別のモジュールとしてビルドする。
ビデオ入出力モジュールではWebカメラに代表されるUVCデバイスを扱うことができる。モジュールをビルドする際に、サポートするバックエンドとしてFFmpeg、Video4Linux、Video for Windows、DirectShow、Media Foundation、OpenNIなどを選択することができる[15][16]。
OpenCV 2.1[17] でSSE拡張命令を使用した最適化コードが実装されている。OpenCV 3.0でIntel IPPのサブセットがIPPCVとして寄贈され、デフォルトで使用されるようになった[18]。そのほか、Intel TBBやOpenMPを利用した並列化も実装されている。OpenCV 3.1ではクロスプラットフォームなSIMDアクセラレーションのためのUniversal Intrinsicsが導入され[19]、従来からのSSE (x86) 命令のサポートに加え、AVX (x86) 命令やNEON (ARM) 命令のサポートも加わっている。
OpenCV 2.2[20] でCUDAを使ったアクセラレータであるgpuモジュール、OpenCV 2.4.3[21] でOpenCLを使ったアクセラレータであるoclモジュールが追加された。gpuモジュールを有効にするためには、OpenCVをWITH_CUDA=ON
構成でビルドする必要がある[22]。また、oclモジュールを有効にするためには、OpenCVをWITH_OPENCL=ON
構成でビルドする必要がある[23]。なおOpenCV 2.4.11時点で、公式のWindows用ビルド済みバイナリではCUDAは有効にされていないが、OpenCLは有効にされている。またgpuモジュールおよびoclモジュールはともに、従来のCPUベースのOpenCV機能と比べて、対応するチャンネルフォーマットに関して制約がある。そのほか、gpuモジュールを使用するためには、CUDAに対応したNVIDIA製GPUを、そしてoclモジュールを使用するためには、OpenCL 1.1に対応したハードウェアを用意する必要がある。
なお、OpenCV 3.0ではgpuモジュールはcudaモジュールに改称され、また独立したoclモジュールは廃止されてOpenCVの各モジュールに透過API (Transparent API, T-API) として分散・融合されている[24]。OpenCV 3.0にはOpenCLの相互運用を可能とするラッパーAPIも用意されており、OpenCL-C言語でカスタムカーネルを記述できるほか、OpenCL 1.2サポートを有効にしてOpenCVをビルドすることで、OpenCL 1.2対応のプラットフォームおよびデバイス上でOpenCL 1.2の機能(カーネルの分割コンパイル&リンクなど)を使えるようになる[25]。また、オプションとしてOpenCL 2.0もしくはAMD (HSA) 拡張のShared Virtual Memoryもサポートしている[26]。
各種言語バインディング(ラッパー)
公式に提供されている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ライセンスに対応。
- .NET用ラッパー
- SharperCV - 商用利用不可、開発終了。
- OpenCVDotNet - GPL v2ライセンス、OpenCV 1.0対応、2007年のバージョン0.7を最後に更新停止。
- Emgu CV - GPL v3ライセンスもしくは商用ライセンス、OpenCV 2.4.10/3.4.3/4.5.1に対応。Mono対応、Windowsストアアプリ対応。
- OpenCvSharp - 3条項BSDライセンス、OpenCV 2.4.10/3.4.4/4.5.1に対応。Mono対応、.NET Core対応、UWPアプリ対応。
- OpenCV.NET[リンク切れ] - BSDスタイルライセンス (MIT)、Mono対応。
- その他
- ruby-opencv - Ruby 1.9.3/2.xおよびOpenCV 2.4.10に対応。BSDライセンス。
- HSPCV - Hot Soup Processor 3.1以降およびOpenCV 1.0に対応。Hot Soup Processorに付属。BSDライセンス。
関連項目
参照
- ^ a b Releases | opencv.org
- ^ License - OpenCV
- ^ 橋本直「特集 拡張現実感 (AR) 基礎3: 開発用ツール」『情報処理』第51巻第4号、情報処理学会、2010年4月、382ページ。
- ^ Intel Acquires Computer Vision for IOT, Automotive | Intel Newsroom
- ^ Intel acquires Itseez | opencv.org
- ^ About | opencv.org
- ^ Introduction to Java Development — OpenCV 2.4.13.0 documentation
- ^ OpenCV - Browse /opencv-win at SourceForge.net
- ^ Tags · opencv/opencv | GitHub
- ^ Releases · opencv/opencv | GitHub
- ^ OpenCV 3.0 Latest news and the Roadmap, Kirill Kornyakov, Itseez, ICVS 2013
- ^ OpenCV 3.1 | OpenCV
- ^ OpenCV 4.0 - OpenCV library
- ^ 第4回 初めてのOpenCV開発 ― Visual Studio/CMake/NuGetでプロジェクト作成【OpenCV 3.0/3.1】:OpenCV入門【3.0対応】(1/3 ページ) - @IT
- ^ “OpenCV: Video I/O with OpenCV Overview”. docs.opencv.org. 2021年1月7日閲覧。
- ^ 第8回 初めてのOpenCV開発 ― CMakeを使ったOpenCVのカスタマイズ【OpenCV 3.1.0】:OpenCV入門【3.0対応】 - @IT
- ^ OpenCV2.0 から OpenCV2.1 の変更点(ChangeLog) | OpenCV.jp
- ^ OpenCV 3.0 | OpenCV
- ^ OpenCV: Universal intrinsics
- ^ OpenCV 2.2 Released - ROS robotics news
- ^ OpenCV 2.4.3 released | OpenCV
- ^ GPU Module Introduction — OpenCV 2.4.11.0 documentation
- ^ OpenCL Module Introduction — OpenCV 2.4.11.0 documentation
- ^ OpenCV: OpenCV modules
- ^ opencv/opencl_core.hpp at 3.0.0 · opencv/opencv | GitHub
- ^ opencv/ocl.cpp at 3.0.0 · opencv/opencv | GitHub
外部リンク
- 公式ウェブサイト
- OpenCV リファレンスマニュアル(日本語訳)とサンプルプログラム集 (OpenCV 2.4まで)
- OpenCV Wiki[リンク切れ] - Willow GarageによるOpenCV Wiki
- OpenCV SourceForge
- Introduction to programming with OpenCV[リンク切れ] - コードの例がある。