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()
原始视频帧:
背景减去视频帧:
因此,我们看到了背景减法算法在视频帧中检测运动和生命的应用。