📜  Python|使用 OpenCV 进行背景减法

📅  最后修改于: 2022-05-13 01:54:58.939000             🧑  作者: Mango

Python|使用 OpenCV 进行背景减法

背景减法在日常生活中有几个用例,它被用于对象分割、安全增强、行人跟踪、计算访客数量、交通车辆数量等。它能够学习和识别前景蒙版。
顾名思义,它能够减去或消除图像中的背景部分。它的输出是一个二进制分割的图像,它本质上给出了关于图像中非静止对象的信息。这种寻找非静止部分的概念存在一个问题,因为移动物体的阴影可能是移动的,有时会被分类在前景中。
流行的背景减法算法有:

  • BackgroundSubtractorMOG :它是一种基于高斯混合的背景分割算法。
  • BackgroundSubtractorMOG2 :它使用相同的概念,但它提供的主要优点是即使在亮度发生变化时也能保持稳定性,并且帧中阴影的识别能力更好。
  • 几何多重网格:它利用统计方法和每像素贝叶斯分割算法。

Python3
# Python code for Background subtraction using OpenCV
import numpy as np
import cv2
 
cap = cv2.VideoCapture('/home/sourabh/Downloads/people-walking.mp4')
fgbg = cv2.createBackgroundSubtractorMOG2()
 
while(1):
    ret, frame = cap.read()
 
    fgmask = fgbg.apply(frame)
  
    cv2.imshow('fgmask', fgmask)
    cv2.imshow('frame',frame )
 
     
    k = cv2.waitKey(30) & 0xff
    if k == 27:
        break
     
 
cap.release()
cv2.destroyAllWindows()


原始视频帧:

背景减去视频帧:

因此,我们看到了背景减法算法在视频帧中检测运动和生命的应用。