OpenCV JavaScript の紹介
 
このチュートリアルでは、OpenCV の opencv.js バインディングを使用して JavaScript で OpenCV について説明します。
OpenCV JavaScript の紹介
OpenCV は、画像処理およびコンピューター ビジョン アプリケーションで使用されています。 OpenCV は、コンピューター ビジョン アプリケーションの構築に使用できる Python、Java、C++ などの多くのプログラミング言語をサポートしています。
Web 開発では、OpenCV の opencv.js バインディングを使用して、コンピューター ビジョンと画像処理アプリケーションで Web サイトを構築できます。 さらに、JavaScript で OpenCV を使用して、マルチメディア処理アプリケーション用の Web サイトを構築できます。
OpenCV のビジョン関数のように、Web 開発に OpenCV 関数のサブセットを使用できます。 ただし、Web ページで OpenCV 関数を使用するには、HTML の <script> タグを使用して opencv.js バインディングを Web ページにリンクする必要があります。
ファイルのアドレスをリンクすることも、ダウンロードしてから .html ファイルにリンクすることもできます。
.html ファイル内のファイルのアドレスをリンクすると、.html ファイルを実行するたびにインターネットにファイルをロードする必要があります。 ただし、opencv.js ファイルをダウンロードして .html ファイルとリンクすると、ファイルをリードするためにインターネットは必要ありません。
たとえば、次のコード行を使用して、.html ファイル内の <script> タグを使用して、ファイルのアドレスを使用して opencv.js ファイルをリンクできます。 以下のコードを参照してください。
<script async src="https://docs.opencv.org/4.5.0/opencv.js" type="text/javascript"></script>
上記のコードでは、リンク アドレスに OpenCV のバージョン番号も表示されます。これは、使用するバージョンに応じて変更できます。 最後に、Web ページに画像を表示するには、グラフィカル コンテナーを使用する必要があります。
HTML の <canvas> タグを使用できます。これは、OpenCV の imshow() 関数を使用して画像を表示するためのグラフィカル コンテナーです。 canvas コンテナの id と、imshow() 関数内の imread() 関数で読み取った画像を渡して表示する必要があります。
たとえば、HTML を使用して簡単な Web ページを作成し、OpenCV の imread() および imshow() 関数を使用して、Web ページ上の画像を読み取り、表示してみましょう。 以下のコードを参照してください。
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Introduction to OpenCV JavaScript</title>
</head>
<body>
  <h2>Introduction to OpenCV JavaScript</h2>
  <div>
    <div class="inputoutputDiv">
      <img id="SourceImage" alt="" />
      <div class="caption">imagesrc <input type="file" id="InputfileName" name="file" /></div>
    </div>
    <div class="inputoutputDiv">
      <canvas id="canvasOutputContainer"></canvas>
      <div class="caption">canvasOutputContainer</div>
    </div>
  </div>
  <script type="text/javascript">
    let imgElement = document.getElementById('SourceImage');
    let inputElement = document.getElementById('InputfileName');
    inputElement.addEventListener('change', (e) => {
      imgElement.src = URL.createObjectURL(e.target.files[0]);
    }, false);
    imgElement.onload = function () {
      let mat = cv.imread(imgElement);
      cv.imshow('canvasOutputContainer', mat);
      mat.delete();
    };
  </script>
  <script async src="https://docs.opencv.org/4.5.0/opencv.js" type="text/javascript"></script>
</body>
</html>
出力:

上記のコードを実行するには、.html ファイルに保存し、Web ブラウザーで開く必要があります。
上記のコードで onload() 関数を使用しました。この関数は、入力画像をロードするときに実行されます。この関数内では、OpenCV を使用して画像を読み取り、表示しました。
