opencv python 背景減法

Background Subtractionhtml

BackgroundSubtractorMOG

MOG算法,即高斯混合模型分離算法,它使用一種經過K高斯分佈的混合來對每一個背景像素進行建模的方法(K = 3-5)算法

import numpy as np
import cv2
import matplotlib.pyplot as plt

cap = cv2.VideoCapture('test.mp4')
fgbg = cv2.bgsegm.createBackgroundSubtractorMOG()

while(1):
    ret, frame = cap.read()

    fgmask = fgbg.apply(frame)

    cv2.imshow('frame',fgmask)
    k = cv2.waitKey(30) & 0xff
    if k == 27:
        break

cap.release()
cv2.destroyAllWindows()

clipboard.png

BackgroundSubtractorMOG2

MOG2算法,也是高斯混合模型分離算法,是MOG的改進算法,該算法的一個重要特徵是 它爲每一個像素選擇適當數量的高斯分佈,它能夠更好地適應不一樣場景的照明變化等.app

import numpy as np
import cv2
import matplotlib.pyplot as plt

cap = cv2.VideoCapture('test.mp4')
fgbg = cv2.createBackgroundSubtractorMOG2()

while(1):
    ret, frame = cap.read()

    fgmask = fgbg.apply(frame)

    cv2.imshow('frame',fgmask)
    k = cv2.waitKey(30) & 0xff
    if k == 27:
        break

cap.release()
cv2.destroyAllWindows()

clipboard.png

BackgroundSubtractorGMG

該算法結合統計背景圖像估計和每像素貝葉斯分割,該算法使用前幾個(默認爲120)幀進行後臺建模。它採用機率前景分割算法,使用貝葉斯推理識別可能的前景對象.在前幾幀圖像中會獲得一個黑色窗口.ide

import numpy as np
import cv2
import matplotlib.pyplot as plt

cap = cv2.VideoCapture('test.mp4')
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(3,3))
fgbg = cv2.bgsegm.createBackgroundSubtractorGMG()

while(1):
    ret, frame = cap.read()

    fgmask = fgbg.apply(frame)
    fgmask = cv2.morphologyEx(fgmask, cv2.MORPH_OPEN, kernel)

    cv2.imshow('frame',fgmask)
    k = cv2.waitKey(30) & 0xff
    if k == 27:
        break

cap.release()
cv2.destroyAllWindows()

clipboard.png

相關文章
相關標籤/搜索