OpenCV 4.13.0
Open Source Computer Vision
読み込み中...
検索中...
見つかりません
🤖 AIによる機械翻訳(非公式) — これは OpenCV 4.13.0 公式リファレンス(英語)を AI (Claude) で自動翻訳したものです。訳に誤りを含む場合があります。正確な情報は 公式英語版(原文) を参照してください。
OpenCV.jsの紹介とチュートリアル

OpenCV

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プログラマが利用できるようにする。

OpenCV.js: JavaScriptプログラマのためのOpenCV

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.js チュートリアル

OpenCVは、OpenCV.jsで利用可能なさまざまな関数を案内する新しい一連のチュートリアルを導入している。このガイドは主にOpenCV 3.x系を対象としている

OpenCV.jsチュートリアルの目的は次のとおりである:

  1. Web開発におけるOpenCVの適応性を高める手助けをする
  2. Webコミュニティ、開発者、コンピュータビジョン研究者が、特定のビジョンアルゴリズムを理解するために、多様なWebベースのOpenCVの例にインタラクティブにアクセスできるよう手助けをする。

OpenCV.jsはブラウザ内で直接実行できるため、OpenCV.jsチュートリアルのWebページは直感的でインタラクティブである。たとえば、WebRTC APIを使ってJavaScriptコードを評価することで、開発者はCV関数の引数を変更し、Webページ上でライブにCVのコーディングを行って、その結果をリアルタイムで確認できる。

このガイドを理解するには、JavaScriptとWebアプリケーション開発の予備知識があることが推奨される。

貢献者

以下はOpenCV.jsのバインディングとチュートリアルの貢献者の一覧である。

  • Sajjad Taheri (初期バージョンのアーキテクト兼GSoCメンター、カリフォルニア大学アーバイン校)
  • Congxiang Pan (GSoC学生、上海交通大学)
  • Gang Song (GSoC学生、上海交通大学)
  • Wenyao Gan (学生インターン、上海交通大学)
  • Mohammad Reza Haghighat (プロジェクト発起人兼スポンサー、Intel Corporation)
  • Ningxin Hu (学生の指導者、Intel Corporation)