OpenCVで背景差分を取得するプログラムです。びっくりするほど簡単にできてしまいますね。 ポイントとしては、
- OpenCVには複数の背景差分アルゴリズムの関数が用意されている
- 戻り値として、背景画素を0、前景画素を255とした2値画像が返される
というところです。これを応用すれば、人物だけ取り出すということも容易にできるわけです。
情報工学技術を利用した教育支援、いわゆる教育工学の研究やってます。研究に関係する技術動向(プログラミングねた)や、日常の覚書き、呟きなどを書いていこうかと思います。今のところ、初歩的なプログラムネタばっかりですが、、、、長い目でお付き合いください。
OpenCVで背景差分を取得するプログラムです。びっくりするほど簡単にできてしまいますね。 ポイントとしては、
GC.Collect();というように、ガーベージコレクションを発動させるだけでなく、赤字の処理を追記したほうがいいらしいです。GC.Collect()で挟むと良いようです。いままでGC.Collect()しか記述してなかったです。ググると既知のTIPSのようですね。
GC.WaitForPendingFinalizers();
GC.Collect();
import cv2サンプルを動かしてみる
cv2.__version__
Out[6]: '3.2.0-dev' ← これが出力
ver228/opencv3 | 3.2.0 | conda | linux-64, osx-64, win-64というのが見つかりました。唯一3.2.0に対応してるようなので(2017.5.16現在)これにします。まだ続きがあります。今度はこのパッケージがどのレポジトリにあるかを探します。
To install this package with conda run:
conda install --channel https://conda.anaconda.org/ver228 opencv3
Mat mat = new Mat()みたいなことをしました。各メソッドはほぼ同じことしてます。が、後者のメソッドが思ったように動かないケースに遭遇し、ちょっと格闘しました。
methodA(mat);
methodB(mat);
msvcr110.dllがないということが発覚。これは、Visual Studio 2012の再頒布可能パッケージに付随するものです。つまり、Visual studio 2010を使っているから2010用の再頒布可能パッケージがあればいいのではないということ。これは盲点でした。早速、、Visual Studio 2012の再頒布可能パッケージをインストールして解決したわけです。