カメラ映像の表示(動画ファイル版)

https://gyazo.com/edffebcb2d7e3c361509dab7b6f2b8bb

スケッチの作成

Processingを起動して,新規にスケッチを保存しましょう. メニューから[ファイル]-[名前を付けて保存]をクリックして,「スケッチフォルダを名前を付けて保存」を開きます. ファイル名に「Project10」を入力し,[保存]をクリックしましょう. 保存先に「Project10」という名前のフォルダが作成されていることを確認してください.

https://gyazo.com/a998688ddfc325db6e1d20982c4c1b36

Videoライブラリの導入

Processingでは Videoライブラリ を導入することで,動画ファイルをウィンドウに表示することができるようになります. まずは,メニューから[スケッチ]-[ライブラリをインポート]-[ライブラリを追加]をクリックして,「Contribution Manager」を開きます. ここで,video をキーワードに検索すると,Video|GStreamer-based video library for Processing が表示されるので,このライブラリを選択してインストールしましょう.

https://gyazo.com/5ea11e24d42f92a343a2d51499018eeb

次に,[スケッチ]-[ライブラリをインポート]-[Video]をクリックして, Videoライブラリをインポート(プログラムで利用可能な状態にすること)します. ソースコードの1行目に「 import processing.video.*; 」と表示されていることを確認してください.

動画ファイルの表示

動画ファイルをProcessingに取り込み,再生する方法を確認しましょう. 動画ファイルはNHKクリエイティブ・ライブラリからダウンロードした素材を利用します. 公開されている素材は,表現・創作活動を目的として無料で利用することができます. 今回は「どーもくん 走り抜ける 白バック素材」を利用してみましょう.

「どーもくん 走り抜ける 白バック素材」のダウンロード

ダウンロードした動画ファイル(domo.mp4)を,スケッチフォルダにコピーします. このとき,スケッチフォルダに新しく data という名前でフォルダを作成し,そのなかに動画ファイルを配置する必要があるので注意してください.

\Project10\data\domo.mp4

動画ファイルを取り込んで再生するには,Movie クラスを利用します. Movieクラスのインスタンスmovieを下記のように初期化します.

movie = new Movie(this, "domo.mp4");

このままだと,動画は1回再生され,そのまま終了してしまいます. そこで,動画をループして再生するために,loop()メソッドを呼び出します.

movie.loop();

movieEvent()は動画のフレームごとに自動的に呼び出されます. read()メソッドを利用して,次のフレームを読み込んでいます.

movie.read();

読み込まれたフレームをimageメソッドで描画します. 動画ファイルの元のサイズは 1280x720 ですが, ここでは 640x360 に縮小して表示しています.

image(movie, 0, 0, 640, 360);

Image from Gyazo

リアルタイム画像処理

draw()関数でfilter()関数を呼び出して, 表示されている映像に様々な効果を与えてみましょう. ここでは,2値化(THRESHOLD)グレースケール(GRAY)ネガポジ反転(INVERT) を試してみます.

2値化(THRESHOLD) を適用してみましょう. 2値化とは黒または白の2色で画像を表示する方法です. 下記を参考にコードを入力したら,Runボタンをクリックしてください. 映像が2値化されていることを確認してください.

Image from Gyazo

グレースケール(GRAY) を適用してみましょう. グレースケールとはモノクロで画像を表示する方法です. 下記を参考にコードを入力したら,Runボタンをクリックしてください. 映像がグレースケールになっていることを確認してください.

Image from Gyazo

ネガポジ反転(INVERT) を適用してみましょう. ネガポジ反転とは色相が正反対の補色で画像を表示する方法です. 下記を参考にコードを入力したら,Runボタンをクリックしてください. 映像がネガポジ反転になっていることを確認してください.

Image from Gyazo

課題

下記コードを参考に 背景差分 に挑戦しましょう. 背景差分とは,「事前に取得しておいた背景画像」と「現在の動画フレーム」を比較することで, 「事前に取得しておいた背景画像」とは異なる画素を抽出する処理のことです. 背景画像は下記のリンクからダウンロードしてください,

背景画像のダウンロード

背景画像は変数bgに格納します. 背景画像と動画フレーム モノクロ成分(輝度)の差 d を計算し, その差が 閾値10 を超える場合は,画素を赤色に設定します.

課題が完成したら,作成したスケッチを ZIPアーカイブ 形式で保存します. ZIPアーカイブを作成するには,メニューから[ツール]-[スケッチをアーカイブ]をクリックして,「スケッチを名前を付けてアーカイブする」を開きます. 保存するファイル名を確認した上で,[保存]をクリックします. 保存先に「Project10-日付a.zip」というファイルが作成されていることを確認してください.

Image from Gyazo

参考書籍