我正在尝试使用帧差检测运动。如果有动议,我会进入另一个方法,如果没有,我不会进入那个方法。问题是当我使用 absdiff() 或 bitwise_xor() 进行帧差异时,我得到一个嘈杂的帧,它总是被检测为运动。
我试图通过使用 erode() 和 dilate() 方法来消除噪音,它降低了噪音的影响,但仍然有噪音。我怎样才能消除这种噪音?
我当前代码的一部分:
capture >> Frame; // get a new frame from camera
cvtColor(Frame,Frame1,CV_RGB2GRAY);
threshold(Frame1,Frame1,50,255,CV_THRESH_BINARY);
waitKey(500);
capture >> PreFrame;
cvtColor(PreFrame,PreFrame,CV_RGB2GRAY);
threshold(PreFrame,PreFrame,50,255,CV_THRESH_BINARY);
//Result = Frame1 - PreFrame1;
//absdiff(Frame1,PreFrame1,Result);
bitwise_xor(Frame1,PreFrame,Result);
erode(Result,Result,Mat());
dilate(Result,Result,Mat());
imshow("Result",Result);
if (norm(Result,NORM_L1)==0){
printf(" no change \n")
}
else
{
// motion detected
}