OpenCV 基於自適應背景更新的運動目標檢測

2021-06-22 20:27:32 字數 1439 閱讀 6720

**

下面這段**利用opencv實現了最為簡單的基於自適應背景更新的運動目標檢測演算法。

即:運動前景提取——背景減除

foreground = |frame - background| > threshold 

更新背景模型——滑動平均濾波

background = background + (frame - background) *  alpha  = background * (1 - alpha) + frame * alpha 

[cpp]view plain

copy

//運動前景檢測——基於自適應背景更新

//author: www.icvpr.com

//blog:   

#include 

#include 

#include 

intmain(

intargc, 

char

** argv)  

cv::mat foregroundimg;  

cv::mat foregroundmat;  

cv::mat backgroundimg;  

cv::mat backgroundmat;  

cv::mat frame;  

cv::mat grayimg;  

cv::mat graymat;  

while

(capture.read(frame))  

// 背景減除

cv::absdiff(graymat, backgroundmat, foregroundmat);  

// 自適應背景更新

cv::addweighted(backgroundmat, alpha, foregroundmat, 1-alpha, 0, backgroundmat);  

// 二值化,獲取前景畫素點

cv::threshold(foregroundmat, foregroundmat, threshold, 255, cv_thresh_binary);  

// 為了顯示用,將cv_32fc1轉換為cv_8u

cv::convertscaleabs(foregroundmat, foregroundimg);  

cv::convertscaleabs(backgroundmat, backgroundimg);  

cv::imshow("frame"

, frame);  

cv::imshow("foreground"

, foregroundimg);  

cv::imshow("background"

, backgroundimg);  

if(cv::waitkey(25) > 0)  

}  return

0;  

}  

背景自適應

一張清晰漂亮的背景能給網頁加分不少,設計師也經常會給頁面的背景使用大圖,我們既不想因為不同解析度變形,也不希望當在大屏的情況下,背景有一塊露白,簡而言之,就是實現能自適應螢幕大小又不會變形的背景大圖,而且背景不會隨著滾動條滾動而滾動。用css實現真的很簡單很簡單,下面我們來看一下第一種方法具體的 你...

Unity相機自適應背景

在 unity 3d 中可以把攝像機設定為正交。正交攝像機與 unity 3d 中普通攝像機相比沒有透視效果 近大遠小 所以正交相機一般可以用於 2d 遊戲開發或者是 3d 遊戲的 ui 開發。在 2d 遊戲開發中,有時會遇到根據螢幕的解析度對遊戲的背景進行自適應縮放的需求,這就需要對正交攝像機的尺...

OpenCV自適應閾值處理

區域性自適應閾值則是根據畫素的鄰域塊的畫素值分布來確定該畫素位置上的二值化閾值。這樣做的好處在於每個畫素位置處的二值化閾值不是固定不變的,而是由其周圍鄰域畫素的分布來決定的。亮度較高的影象區域的二值化閾值通常會較高,而亮度較低的影象區域的二值化閾值則會相適應地變小。不同亮度 對比度 紋理的區域性影象...