(Translated by https://www.hiragana.jp/)
OpenCV - Wikipedia コンテンツにスキップ

OpenCV

出典しゅってん: フリー百科ひゃっか事典じてん『ウィキペディア(Wikipedia)』
OpenCV
開発元かいはつもと インテルWillow GarageItseez
最新さいしんばん
4.10.0 / 2024ねん6がつ3にち (59にちまえ) (2024-06-03)[1]
リポジトリ ウィキデータを編集
プログラミング
言語げんご
C++JavaPython[2]
対応たいおうOS Windows, Linux, FreeBSD, macOS, Android, iOS
プラットフォーム クロスプラットフォーム
種別しゅべつ ライブラリ
ライセンス OpenCV 4.4以前いぜん: さん条項じょうこうBSDライセンス / OpenCV 4.5以降いこう: Apache v2[3]
公式こうしきサイト opencv.org
テンプレートを表示ひょうじ

OpenCV(オープンシーヴィ、えい: Open Source Computer Vision Library)とはインテル開発かいはつ公開こうかいしたオープンソースコンピュータビジョンライブラリ[4]。2009ねんWillow Garage(ウィロー・ガレージ)に開発かいはつ移管いかんされ、さらにそのItseezにメンテナンスが移管いかんされた[5]が、2016ねん5がつにインテルがItseezを買収ばいしゅうすることが発表はっぴょうされた[6][7]

概要がいよう

[編集へんしゅう]

画像がぞう処理しょり画像がぞう解析かいせきおよび機械きかい学習がくしゅうひとし機能きのうC++JavaPythonMATLABようライブラリ[8]様々さまざまプラットフォームすなわち複数ふくすうオペレーティングシステム (OS) やCPUアーキテクチャに対応たいおうするクロスプラットフォームなライブラリであり、macOSFreeBSDひとしすべてのPOSIX準拠じゅんきょしたUnixけいOSLinuxWindowsAndroidiOSひとしをサポートしている[9]。Androidへの移植いしょくは2010ねんはじまり、バージョン2.3で正式せいしき利用りよう可能かのうとなった。iOS対応たいおう完全かんぜん統合とうごうは2012ねんにリリースされた2.4.2で利用りよう可能かのうとなった。

当初とうしょからPowerPCけいプロセッサなどにも対応たいおうしていたものの、もともとインテルが開発かいはつしていたこともあって、x86けいプロセッサへの対応たいおう最適さいてき主流しゅりゅうだった。しかし、ARMアーキテクチャ採用さいようしたモバイルデバイスの台頭たいとうともない、ARMけいプロセッサへの対応たいおう最適さいてきにもまれている[10]

歴史れきし

[編集へんしゅう]

1999ねんにプロジェクト開始かいし最初さいしょのアルファばん公開こうかいされたのは、国際こくさい会議かいぎCVPR 2000 (IEEE Conference on Computer Vision and Pattern Recognition 2000) である。2001ねんから2005ねんあいだに5つのベータばんがリリースされた。2006ねん後半こうはんにバージョン1.0の正式せいしきばんがリリースされた[11][12]。クロスプラットフォームを意識いしきした設計せっけいとなっており、当初とうしょC言語げんごかれていた。このことが移植いしょくせいたかめることにつながった[9][注釈ちゅうしゃく 1]

2008ねんにWillow Garageによるサポートをけ、開発かいはつじょうきょうふたた活発かっぱつになった。2009ねん10がつに2かいのメジャーバージョンアップが実施じっしされ、2.0はんがリリースされた。従来じゅうらいのC API(C言語げんご関数かんすう形式けいしきのインターフェイス)にくわえて、C++ APIが導入どうにゅうされた[9]。OpenCV 2.4.4以降いこうではJavaが公式こうしきにサポートされている[13]。OpenCV 2.x系列けいれつは2018ねん2がつに2.4.13.6がリリースされたのち、メンテナンスされていない[1][14][15][16]

2015ねん6がつに3かいのメジャーバージョンアップとしてOpenCV 3.0が正式せいしきリリースされた。OpenCV 3.0では従来じゅうらいのC APIはレガシーAPIあつかいとなりメンテナンスが終了しゅうりょうしているため、わりにC++ APIを使つかうことが推奨すいしょうされている[17]。2015ねん12月にリリースされたOpenCV 3.1では、Google Summer of Code 2015の成果せいかぶつみなど、多数たすう機能きのう追加ついかされている[18]。OpenCV 3.x系列けいれつは、2021ねん10がつにリリースされた3.4.16の公式こうしきビルドみバイナリが提供ていきょうされており[1]、また2023ねん6がつにバグ修正しゅうせいふくむ3.4系列けいれつ最終さいしゅうばんとして3.4.20がリリースされた[19]

2018ねん11月にOpenCV 4.0がリリースされた[20]C++11規格きかく準拠じゅんきょコンパイラが必須ひっすとなり、またC APIは廃止はいしされた。Graph API (G-API) やQRコード検出けんしゅつ機能きのうなどが追加ついかされた。DNNモジュールにおいて、OpenCL使つかえないプラットフォームけに、Vulkanバックエンドの実験じっけんてきサポートが追加ついかされた。

2024ねん1がつ現在げんざい、4.x系列けいれつ開発かいはつつづけられている。またOpenCV 5の開発かいはつについて、2023ねん10がつ資金しきん調達ちょうたつのためのクラウドファンディングげられた[21]

機能きのう

[編集へんしゅう]

実装じっそう分野ぶんやつぎとおり。

OpenCVの機能きのうはいくつかのライブラリモジュールに分割ぶんかつして実装じっそうされている。モノリシックな1ファイル(worldモジュール)にビルドすることも可能かのうであるが[22]通常つうじょう必要ひつようなものだけ個別こべつのモジュールとしてビルドする。

ビデオ入出力にゅうしゅつりょくモジュールではWebカメラ代表だいひょうされるUVCデバイスあつかうことができる。モジュールをビルドするさいに、サポートするバックエンドとしてFFmpegVideo4Linux英語えいごばんVideo for WindowsDirectShowMedia FoundationOpenNI英語えいごばんなどを選択せんたくすることができる[23][24]

OpenCV 2.1[25]SSE拡張かくちょう命令めいれい使用しようした最適さいてきコードが実装じっそうされている。OpenCV 2.4.3でIntel TBBOpenMP、AppleのGCD英語えいごばん、Windowsの同時どうじ実行じっこうランタイムなどを利用りようした並列へいれつcv::parallel_for実装じっそうされている[26]。OpenCV 3.0でIntel IPPのサブセットがIPPCVとして寄贈きぞうされ、デフォルトで使用しようされるようになった[27]。OpenCV 3.1ではクロスプラットフォームなSIMDアクセラレーションのためのUniversal Intrinsicsが導入どうにゅうされ[28]従来じゅうらいからのSSE (x86) 命令めいれいのサポートにくわえ、AVX (x86) 命令めいれいNEON (ARM) 命令めいれいのサポートもくわわっている。OpenCV 3.3.1ではPPC64英語えいごばん(64ビットPowerPC)アーキテクチャへの最適さいてきもVSX命令めいれいへの対応たいおうによって実現じつげんされている[29]

OpenCV 2.2[30]CUDA使つかったアクセラレータであるgpuモジュール、OpenCV 2.4.3[31]OpenCL使つかったアクセラレータであるoclモジュールが追加ついかされた。gpuモジュールを有効ゆうこうにするためには、OpenCVをWITH_CUDA=ON構成こうせいでビルドする必要ひつようがある[32]。また、oclモジュールを有効ゆうこうにするためには、OpenCVをWITH_OPENCL=ON構成こうせいでビルドする必要ひつようがある[33]。なお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) として分散ぶんさん融合ゆうごうされている[34][35]。OpenCV 3.0にはOpenCLの相互そうご運用うんよう可能かのうとするラッパーAPIも用意よういされており、OpenCL-C言語げんごでカスタムカーネルを記述きじゅつできるほか、OpenCL 1.2サポートを有効ゆうこうにしてOpenCVをビルドすることで、OpenCL 1.2対応たいおうのプラットフォームおよびデバイスじょうでOpenCL 1.2の機能きのう(カーネルの分割ぶんかつコンパイル&リンクなど)を使つかえるようになる[36]。また、オプションとしてOpenCL 2.0もしくはAMD (HSA) 拡張かくちょうのShared Virtual Memoryもサポートしている[37]

各種かくしゅ言語げんごバインディング(ラッパー)

[編集へんしゅう]

公式こうしき提供ていきょうされているOpenCV APIとして、C/C++ようインターフェイスのほか、Java、Python、MATLABバインディングなどが存在そんざいするが、そのほかにも非公式ひこうしき各種かくしゅ言語げんごけのラッパーが存在そんざいする。

OpenCV 4.4では、Objective-CSwiftようのバインディングが公式こうしきまれた[38]

脚注きゃくちゅう

[編集へんしゅう]

注釈ちゅうしゃく

[編集へんしゅう]
  1. ^ C++の最初さいしょ国際こくさい標準ひょうじゅん規格きかく「ISO/IEC 14882:1998」通称つうしょうC++98制定せいていされたのは1998ねんのことであり、2000年代ねんだい初頭しょとうはまだ規格きかく完全かんぜん準拠じゅんきょした処理しょりけいすくなく、移植いしょくせいたかいコードをC++で記述きじゅつするのは困難こんなんだった。また、ロボティクスのような環境かんきょうけのソフトウェア開発かいはつではCを使つかうことはできるものの、C++は使つかえないこともおおかった。

出典しゅってん

[編集へんしゅう]
  1. ^ a b c Releases | opencv.org
  2. ^ GitHub - opencv/opencv: Open Source Computer Vision Library
  3. ^ License - OpenCV
  4. ^ 橋本はしもとただし特集とくしゅう 拡張かくちょう現実げんじつかん (AR) 基礎きそ3: 開発かいはつようツール」『情報処理じょうほうしょりだい51かんだい4ごう情報処理じょうほうしょり学会がっかい、2010ねん4がつ、382ページ。 
  5. ^ だい1かい OpenCVとは? 最新さいしん3.0のしん機能きのう概要がいようとモジュール構成こうせい:OpenCV入門にゅうもん【3.0対応たいおう】(1/2 ページ)”. @IT. 2023ねん5がつ3にち閲覧えつらん
  6. ^ Intel Acquires Computer Vision for IOT, Automotive | Intel Newsroom
  7. ^ Intel acquires Itseez | opencv.org
  8. ^ About | opencv.org
  9. ^ a b c Platforms - OpenCV
  10. ^ ARM - OpenCV
  11. ^ SourceForge.net: Open Computer Vision Library, Internet Archive
  12. ^ ChangeLog_v10-v21#1.0 · opencv/opencv Wiki · GitHub
  13. ^ Introduction to Java Development — OpenCV 2.4.13.0 documentation
  14. ^ OpenCV - Browse /opencv-win at SourceForge.net
  15. ^ Tags · opencv/opencv | GitHub
  16. ^ Releases · opencv/opencv | GitHub
  17. ^ OpenCV 3.0 Latest news and the Roadmap, Kirill Kornyakov, Itseez, ICVS 2013
  18. ^ OpenCV 3.1 - OpenCV
  19. ^ ChangeLog#version:3.4.20 · opencv/opencv Wiki · GitHub
  20. ^ ChangeLog#version:4.0.0 · opencv/opencv Wiki · GitHub
  21. ^ Where Is OpenCV 5? A Call To Keep OpenCV Free To All - OpenCV
  22. ^ だい4かい はじめてのOpenCV開発かいはつ ― Visual Studio/CMake/NuGetでプロジェクト作成さくせい【OpenCV 3.0/3.1】:OpenCV入門にゅうもん【3.0対応たいおう】(1/3 ページ) - @IT
  23. ^ OpenCV: Video I/O with OpenCV Overview”. docs.opencv.org. 2021ねん1がつ7にち閲覧えつらん
  24. ^ だい8かい はじめてのOpenCV開発かいはつ ― CMakeを使つかったOpenCVのカスタマイズ【OpenCV 3.1.0】:OpenCV入門にゅうもん【3.0対応たいおう】 - @IT
  25. ^ OpenCV2.0 から OpenCV2.1 の変更へんこうてん(ChangeLog) | OpenCV.jp
  26. ^ ChangeLog#version:2.4.3 · opencv/opencv Wiki | GitHub
  27. ^ OpenCV 3.0 - OpenCV
  28. ^ OpenCV: Universal intrinsics
  29. ^ ChangeLog#version:3.3.1 · opencv/opencv Wiki · GitHub
  30. ^ OpenCV 2.2 Released - ROS robotics news
  31. ^ OpenCV 2.4.3 released - OpenCV
  32. ^ GPU Module Introduction — OpenCV 2.4.11.0 documentation
  33. ^ OpenCL Module Introduction — OpenCV 2.4.11.0 documentation
  34. ^ OpenCV: OpenCV modules
  35. ^ OpenCL - OpenCV
  36. ^ opencv/opencl_core.hpp at 3.0.0 · opencv/opencv | GitHub
  37. ^ opencv/ocl.cpp at 3.0.0 · opencv/opencv | GitHub
  38. ^ ChangeLog#version:4.4.0 · opencv/opencv Wiki · GitHub

関連かんれん項目こうもく

[編集へんしゅう]

外部がいぶリンク

[編集へんしゅう]