catalinaの備忘録

ソフトウェアやハードウェアの備忘録。後で逆引きできるように。

OpenCVで背景除去(その1)

画像処理の基本として背景除去に手を出してみる。
まだ初歩なので実運用には程遠いものだと思う。

 

1、フレーム差分を求める

フレーム差分を求める。
これは動きのあった箇所が抽出されることになる。
ただ、カメラではどうしても手ぶれがあるので、実行してみると輪郭抽出みたいになってしまった。
ちなみに、Core.absdiffメソッドの第一、第二引数はグレースケールじゃないといけない。
カラー画像で抽出したいならば、この関数の実行結果をマスクとしてフルカラー画像を処理するとかしないといけない。

 


//( onCameraFrameに以下のコードを記述する ) // 1フレーム前の画像との差分をとる mGray = inputFrame.gray(); Core.absdiff(mPreFrame, mGray, mIntermediateMat); // 1フレーム前の情報として保持する mPreFrame = inputFrame.gray().clone(); // 差分画像を表示する return mIntermediateMat;

Javaでのメモリの扱いになれていないのでclone();していいものやらどうやら。
手元の実験環境だとまだ処理落ちはしてないし。OK。
まずは初歩ということで。