C# と OpenCvSharp3 でUSBカメラを使って背景に対して動くもの(動体検知)
をして写真、録画できるようなものを製作中で悪戦苦闘しています。
OpenCvSharp3はNuGetでインストールして使用中です。
コードはあっちこっちのサイトでキャプチャーできるものを探して作りました。
OpenCvSharpはよく理解しておらず、エイ、ヤーでやっています。
今はUSBカメラの映像に加え、差分のWindow(白黒)が表示できている状況です。
例えば手をかざすと手のみ。
やりたいことは、キャプチャー画像に動体があれば、画像を何らかの数値化して、
大きな変化があれば動体検知した!みたいにしたいです。
何をどのようにすれば数値化で背景に差があったことが分かるようにできるか
教えていただければと思います。数値がある値以上になると動体が映ったと
したいです。
今は、ピクチャーボックスに背景が映っており、もう一つのWindowには例えば
カメラに手をかざすと手のみが徐々に表示される状況です。
BackgroundSubtractorMOG2 を使用しています。
一部コードを記載します。宜しくお願いします。
// カメラ画像取得用のVideoCapture作成
capture = new VideoCapture(0);は最初にしている前提です。
Mat frame;
Mat output;
~~~
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker bw = (BackgroundWorker)sender;
BackgroundSubtractorMOG2 sbn =
BackgroundSubtractorMOG2.Create(500, 16, true);
while (!backgroundWorker1.CancellationPending)
{
capture.Read(frame); // OpenCvSharpのピクチャーボックスの場合
sbn.Apply(frame, output); // 比較
bw.ReportProgress(0); }
}
private void backgroundWorker1_ProgressChanged(object sender,
ProgressChangedEventArgs e)
{
pictureBoxIpl1.ImageIpl = frame; // OpenCvSharp のピクチャーボックス
Cv2.ImShow("差分 Window", output); // 差分ウィンドウ 動体差分のデータ(映像)
}
以上
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/16 04:36
2019/03/17 10:48