運動目標檢測OpenCV背景減除法

2021-10-17 14:45:38 字數 1342 閱讀 6224

背景減除法:

1.gmm mog2演算法,高斯混合模型分離演算法,它為每個畫素選擇適當數量的高斯分布

函式:cv2.createbackgroundsubtractormog2(int history=500,double varthread=16,bool detectshadows =true)

2.knn模型:

cv2.createbackgroundsubtractorknn()

1初始化背景建模物件gmm

3使用背景建模消除生成mask

4對mask進行輪廓分析提取roi

5繪製roi物件

import numpy as np

import cv2

cap = cv2.videocapture("anew.flv")

fgbg = cv2.createbackgroundsubtractormog2(history=500,varthreshold=100,detectshadows=false)

def getperson(image,opt=1):

line = cv2.getstructuringelement(cv2.morph_rect,(1,5),(-1,-1))

mask = cv2.morphologyex(mask,cv2.morph_open,line)

cv2.imshow("mask",mask)

#opencv版本不同,以下返回的引數個數也不同

for c in range(len(contours)):

area = cv2.contourarea(contours[c])

if area < 300:

continue

rect = cv2.minarearect(contours[c])

cv2.ellipse(image,rect,(0,255,0),2,8)

cv2.circle(image,(np.int32(rect[0][0]),np.int32(rect[0][1])),2,(255,0,0),2,cv2.line_aa)

return image,mask

while true:

ret,frame = cap.read()

result,m_ = getperson(frame)

cv2.imshow('result',result)

k = cv2.waitkey(20) & 0xff ==ord('q')

if k ==27:

break

cap.release()

cv2.destroyallwindows()

除了不能關閉視窗,還得強制關停,沒毛病。

運動目標檢測 背景減法

一 原理 背景減法 background subtraction 是當前運動目標檢測技術中應用較為廣泛的一類方法,它的基本思想和幀間差分法相類似,都是利用不同影象的差分運算提取目標區域。不過與幀間差分法不同的是,背景減法不是將當前幀影象與相鄰幀影象相減,而是將當前幀影象與乙個不斷更新的背景模型相減,...

運動背景下的運動目標檢測

各種目標檢測方法介紹 懶人可以直接略過 目標檢測是乙個老話題了,在很多演算法當中都有它的身影。目標檢測要做的就兩件事 檢測當前中有沒有目標?如果有的話,在哪?按照先驗知識和背景運動來劃分的話,目標檢測方法大概可以分為兩大類 第一,已知目標的先驗知識。在這種情況下檢測目標有兩類方法,第一類方法是用目標...

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

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