![]() |
OpenCV 5.0.0
Open Source Computer Vision
|
OpenCVは1999年にIntelで Gary Bradski によって作られた。最初のリリースは2000年に登場した。Vadim Pisarevsky がGary Bradskiに加わり、IntelのロシアのソフトウェアOpenCVチームを統括した。2005年には、2005年のDARPA Grand Challengeで優勝した車両であるStanleyにOpenCVが使われた。その後、Gary BradskiとVadim Pisarevskyがプロジェクトを率い、Willow Garageの支援のもとで活発な開発が続けられた。OpenCVは現在、コンピュータビジョンと機械学習に関する多数のアルゴリズムをサポートしており、日々拡張を続けている。
OpenCVはC++、Python、Javaなど多様なプログラミング言語をサポートしており、Windows、Linux、OS X、Android、iOSといったさまざまなプラットフォームで利用できる。CUDAやOpenCLをベースとした高速なGPU演算のためのインタフェースも活発に開発されている。OpenCV.jsはOpenCVをオープンなWebプラットフォームにもたらし、JavaScriptプログラマが利用できるようにする。
Webは最も普遍的なオープン計算プラットフォームである。HTML5標準がすべてのブラウザに実装されているため、WebアプリケーションはHTML5のvideoタグでオンライン映像を描画したり、WebRTC APIでウェブカメラ映像を取り込んだり、canvas APIで映像フレームの各ピクセルにアクセスしたりできる。豊富に利用可能なマルチメディアコンテンツがあるなか、Web開発者は革新的なアプリケーションを構築するために、JavaScriptで多種多様な画像・ビジョン処理アルゴリズムを必要としている。この要件は、Web Virtual Reality (WebVR) やAugmented Reality (WebAR) といったWeb上の新たなアプリケーションにとってさらに不可欠である。これらすべてのユースケースは、計算負荷の高いビジョンカーネルをWeb上で効率的に実装することを求めている。
Emscripten はLLVMからJavaScriptへのコンパイラである。clangを使ってC/C++から生成できるLLVMビットコードを受け取り、それをWebブラウザ内で直接実行できるasm.jsまたはWebAssemblyにコンパイルする。Asm.jsは高度に最適化可能な、JavaScriptの低レベルなサブセットである。Asm.jsは、ネイティブに近い実行速度を提供するJavaScriptエンジンでの事前(ahead-of-time)コンパイルと最適化を可能にする。WebAssemblyは、Web向けのコンパイルに適した、移植性が高くサイズおよびロード時間の点で効率的な新しいバイナリフォーマットである。WebAssemblyはネイティブ速度での実行を目指している。WebAssemblyは現在、W3Cによってオープンスタンダードとして設計が進められている。
OpenCV.jsは、Webプラットフォーム向けに選定されたOpenCV関数のサブセットに対するJavaScriptバインディングである。これにより、マルチメディア処理を行う新たなWebアプリケーションが、OpenCVで利用可能な多種多様なビジョン関数の恩恵を受けられる。OpenCV.jsはEmscriptenを活用してOpenCV関数をasm.jsまたはWebAssemblyのターゲットにコンパイルし、WebアプリケーションがそれらにアクセスするためのJavaScript APIを提供する。今後のバージョンのライブラリでは、SIMDやマルチスレッド実行など、Web上で利用可能なアクセラレーションAPIを活用する予定である。
OpenCV.jsは当初、Intel Corporationの資金提供を受けた研究プロジェクトとして、カリフォルニア大学アーバイン校 (UCI) のParallel Architectures and Systems Groupで作られた。OpenCV.jsはGoogle Summer of Code 2017プログラムの一環としてさらに改良され、OpenCVプロジェクトに統合された。
OpenCVは、OpenCV.jsで利用可能なさまざまな関数を案内する新しい一連のチュートリアルを導入している。このガイドは主にOpenCV 3.x系を対象としている。
OpenCV.jsチュートリアルの目的は次のとおりである:
OpenCV.jsはブラウザ内で直接実行できるため、OpenCV.jsチュートリアルのWebページは直感的でインタラクティブである。たとえば、WebRTC APIを使ってJavaScriptコードを評価することで、開発者はCV関数の引数を変更し、Webページ上でライブにCVのコーディングを行って、その結果をリアルタイムで確認できる。
このガイドを理解するには、JavaScriptとWebアプリケーション開発の予備知識があることが推奨される。
以下はOpenCV.jsのバインディングとチュートリアルの貢献者の一覧である。