背景減除法:
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影象減法函式,只不過是相...