帧间差分算法

第一步:从摄像头采集视频成一帧一帧的图像

函数vecdiocapture capture(0/1);if(!capture.isopen());打开摄像头如果失败就输出“OPEN CAMERA FAIL”

第二步:把当前帧的图像灰度化cvtColor();然后取当前帧的图像与上一帧的图像做差subtract();并且绝对值abs();然后把取完绝对值的图片位深从16变为8  convertTo()最后还要进行阈值化threshold();大于阈值的就赋予该点255否则赋予0 .。

第三步:通过迭代器方法遍历阈值化后的图像的每一个像素点:

cv::Mat_::iterator it = resule_grayimg.begin();
   cv::Mat_::iterator itend = resule_grayimg.end();
   for (; it != itend; ++it)
   {
    if ((*it)>0) counter += 1;//二值化后,像素点是0或者255
   }//如果像素点不为零就累计counter加一。

第四步:通过判断counter像素点的个数判断摄像头拍摄的物体是否由移动,当有移动时相邻两帧图像的差值的绝对值就会大于零,改变量越大差值的绝对值越大。

你可能感兴趣的:(原创)