今年はマンションの理事の当番なのですが、想像以上に忙しいです。3週連続週末にイベントがあって大変。
本日は遠大な目標の実現に向けて、ProcessingでOpenCVを使うための準備をしたいと思います。(知ってる人にはごく当たり前の内容です)
ProcessingでOpenCVを使う方法
OpenCVはインテルが開発した、画像の処理や解析を行うオープンソースのライブラリです。openFrameworksをはじめとする各種クリエイティブコーディング環境で利用されています。Processingでも専用に用意されたライブラリを用いることで、OpenCVの機能を使うことが可能です。
ProcessingでOpenCVを利用する手順は以下の通りです。
OpenCV for Processingの入手
まず、Processing専用のOpenCVライブラリであるOpenCV for ProcessingをGitHubから入手します。専用ページのreleasesから最新のものをダウンロードします。
OpenCV for Processingのインストール
次にOpenCV for ProcessingをProcessingにインストールします。インストールはダウンロードしたファイルを展開して、Sketchbookフォルダの直下のlibraries
フォルダに置くことで行います。
Sketchbookフォルダの場所は、ProcessingのPreferences
メニューのSkeckbook location
から確認することができます。
Processingをすでに起動していた場合は、一度起動し直さないとライブラリが認識されないので注意してください。
サンプルを動かす
最後に、OpenCV for Processingに同梱されているサンプルを動かしてみます。OpenCV for Processingのexamples
フォルダにあるBackgroundSubtraction.pde
を起動してみます。
無事、動作が確認できました。
このサンプルのコードは以下のとおり37行しかありません。このあたりのお手軽さがProcessingの最大の魅力ですね。
import gab.opencv.*; import processing.video.*; Movie video; OpenCV opencv; void setup() { size(720, 480, P2D); video = new Movie(this, "street.mov"); opencv = new OpenCV(this, 720, 480); opencv.startBackgroundSubtraction(5, 3, 0.5); video.loop(); video.play(); } void draw() { image(video, 0, 0); opencv.loadImage(video); opencv.updateBackground(); opencv.dilate(); opencv.erode(); noFill(); stroke(255, 0, 0); strokeWeight(3); for (Contour contour : opencv.findContours()) { contour.draw(); } } void movieEvent(Movie m) { m.read(); }