帧差法
帧差法,顾名思义就是将视频中前后两帧做减法,当前帧在(x,y)点处的像素值减去上一帧在(x,y)处的像素值。该方法的优点是提取效果比较稳定,速度比较快。缺点也是蛮明显的,如果你要提取的目标是静止的或者移动速度很慢,前后两帧的前景物体会有很大一部分重合,从而会导致提取出来的图像有空洞。
当我们要提取前景时,帧差法基本上是最简单的一种方法了,变化缓慢的背景,以及运动较快的物体,在进行帧差法之后,进行阈值分割,将差值图像变成二值图像,就完成了运动目标以及背景的分离。
本文主要讲一下最简单的帧差,三帧差法原理相差不大,对称差分就不讲了。
公式如下:
示例
我简单编写了一个帧差法及阈值分割的程序如下:
#include <opencv2/opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main(int argc, char** argv)
{
VideoCapture capture("F://crop.avi");
//VideoCapture capture(0);//直接调用摄像头
if (!capture.isOpened())
{
cout << "data error" << endl;
return false;
}//测试数