opencvを利用して背景差分をおこなう際に、背景画像をリアルタイム更新しながらできるようなプログラムを作成中です。
以下のようなイメージです。簡略化のため実際には動きません。
完成のイメージとしては、1つ前のフレームと現フレームの差分を出したいのですが、
while文の外で最初に背景画像(im)を保存した後に、while文の中で"背景画像(im)を更新しておこなうようなプログラムを作成してみましたが、背景画像が更新されず、良好な結果が得られませんでした。
どのようにプログラムを組めばよろしいでしょうか。
ご教授お願いします。
C
1int main() 2{ 3 VideoCapture capture("in.mp4"); 4 VideoWriter writer("out.mp4", fourcc, fps, cv::Size(256, 256), true); 5 6 while (true) 7 { 8 capture >> im; 9 if (im.empty()) 10 break; 11 12 cvtColor(im, bg, CV_BGR2GRAY); 13 14 in = im.clone(); 15 16 cvtColor(in, in_gray, CV_RGB2GRAY); 17 18 absdiff(in_gray, bg, diff); 19 threshold(diff, dst, th, 255, THRESH_BINARY); 20 } 21 22 waitKey(0); 23 return 0; 24}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。