opencv版本3.4
# 基本的运动物体检测
# 计算帧之间的差异,或考虑“背景”帧与其他帧之间的差异
import cv2
import numpy as np
##设置为默认摄像头
camera = cv2.VideoCapture('fakeman.avi') # 读取视频
fourcc = cv2.VideoWriter_fourcc(*'XVID')
fps = camera.get(cv2.CAP_PROP_FPS)
size = (int(camera.get(cv2.CAP_PROP_FRAME_WIDTH))*2, int(camera.get(cv2.CAP_PROP_FRAME_HEIGHT))) # 输出视频尺寸,长和宽
print('size', size)
out = cv2.VideoWriter('fakemanout.avi', fourcc, fps, size) # 输出视频
# getStructuringElement是获取常用的结构元素的形状,MORPH_ELLIPSE是椭圆(包括圆形),后面定义的是大小
es = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (9, 4))
kernel = np.ones((5, 5), np.uint8)
background = None
while True:
ret, frame = camera.read()
if ret == False: # 防止下一次循环过程中空图导致错误
break
if background is None: # 初始化背景,后面的图像均以此为背景,即第一张图
background = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) #灰度化图像
background = cv2.Gau