Open CV 三幀差法

2021-07-08 10:43:01 字數 1346 閱讀 7537

首先 去連續三幅圖定義為

其中image1 image2 做幀的差值運算

image2 image3 做幀的差值運算

並將他們差值做平滑處理和閾值處理 轉化成二值影象 

然後將其進行位與運算得出結果result

#include "highgui.h" 

#include "cv.h" 

#include "cxcore.h" 

#include "cvaux.h" 

#include

#include

#include

#include

#include

#include

#include

#include

using namespace std;

int num[300];

int sum[300];

void initpixel(iplimage * img, int &_low, int &_top)

}for (int i = 1; i < 256; i++)

}int otsu(iplimage *img)}}

return mbest;

}int main()

if (ncount == 2)

cvcvtcolor(mframe, image2, cv_bgr2gray);

if (ncount >= 3)

cvabsdiff(image2, image1, imask1);//做差值

cvabsdiff(image3, image2, imask2);//做差值

int mbest1 = otsu(imask1);

cvsmooth(imask1, imask1, cv_median);

cvthreshold(imask1, imask1, mbest1, 255, cv_thresh_binary);

int mbest2 = otsu(imask2);

cvsmooth(imask2, imask2, cv_median);

cvthreshold(imask2, imask2, mbest2, 255, cv_thresh_binary);

cvand(imask1, imask2, imask);

dword finish = gettickcount();

cvshowimage("src", image2);

cvshowimage("result", imask);

}char c = cvwaitkey(30);

if (c == 27)

break;

}return 0;

}

OpenCV實現幀差法

幀差法的優勢是運算量小,實時性好,可以獲得不錯的輪廓。缺點是不夠精細,閾值過高容易漏檢,過低則無法做到noise tolerance.另外如果發生光照突變等情況,幀差法會把整副影象當成運動區域。以下是實現的 include highgui.h include cv.h void main if fr...

關於幀差法的想法(opencv)

當我們要提取前景時,幀差法基本上是最簡單的一種方法了,變化緩慢的背景,以及運動較快的物體,在進行幀差法之後,進行閾值分割,將差值影象變成二值影象,就完成了運動目標以及背景的分離。本文主要講一下最簡單的幀差,三幀差法原理相差不大,對稱差分就不講了。公式如下 我簡單編寫了乙個幀差法及閾值分割的程式如下 ...

OpenCV運動目標檢測背景差法和幀差法的理解

上圖使用absdiff影象減法函式,如下 二值化腐蝕膨脹學習,幀差法和背景差法對比測試 include includeusing namespace cv using namespace std int main int argc,char ar 幀差法也是使用absdiff影象減法函式,只不過是相...