import cv2 import numpy as npcap = cv2.VideoCapture('video.mp4') try:import cv2backSub = cv2.createBackgroundSubtractorMOG2() except AttributeError:backSub = cv2.bgsegm.createBackgroundSubtractorMOG()#形态学kernel kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))while True:ret, frame = cap.read()if ret:#灰度cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)#去噪blur = cv2.GaussianBlur(frame, (3,3), 5)#去背景mask = backSub.apply(blur)#腐蚀erode = cv2.erode(mask,kernel)#膨胀dilate = cv2.dilate(erode,kernel,iterations = 3)close = cv2.morphologyEx(dilate,cv2.MORPH_CLOSE,kernel)close = cv2.morphologyEx(close, cv2.MORPH_CLOSE, kernel)contours,h = cv2.findContours(close,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)for (i, c) in enumerate(contours):(x,y,w,h) = cv2.boundingRect(c)cv2.rectangle(frame, (x,y),(x+w,y+h),(0,0,255),2)cv2.imshow('video',frame)# cv2.imshow('erode',close)key = cv2.waitKey(1)if key == 27:breakcap.release() cv2.destroyAllWindows()