CSS filterで映像を軽量に加工

ブラウザに表示したカメラ映像を加工し、中央以外を暗くするサンプルを作りました。QRコードリーダーのような読み取りアプリに使えるUIです。すべての加工をJavaScriptで処理せず、CSSも併用した方が軽量になります。

明度・彩度変換はCSS filter利用

ブラウザで実行しているWebアプリサンプルです。真ん中の四角を通る時だけカラーになります。

Webカメラの映像全体をcanvasに転写して、中央以外の明度・彩度を変換して作ることもできますが、少し重くなります。

軽量化するため、明度・彩度のfilter CSSをかけた映像の上に、中央の映像を転写したcanvasを重ねています。

映像(videoタグ)に対しfilterをかけ、グレースケール100%、明るさを50%に加工しています。

canvasに転写した映像は、処理が間に合わないと、1フレーム裏の映像とズレが発生してしまいます。微妙なズレを許容できれば、使える手法です。

サンプルコード

このようなUIを作るときは、中央の四角部分で何か認識を行うと思います。

私の場合は、ボールの認識で使っています。

中央の四角はCSSのborder-radius、またはcanvasのclipで円にすることもできます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)