import cv2 import numpy as np cap = cv2.VideoCapture('video.mp4') try: import cv2 backSub = 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: break cap.release() cv2.destroyAllWindows()
opencv 识别运动物体
最新推荐文章于 2025-04-28 10:46:03 发布