#基本的运动物体检测
#计算帧之间的差异,或考虑“背景”帧与其他帧之间的差异
import cv2
import numpy as np
##设置为默认摄像头
camera = cv2.VideoCapture(0)
#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 background is None:#初始化背景,后面的图像均以此为背景,即第一张图
background = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)###灰度化图像
background = cv2.GaussianBlur(background,(21,21),0)###进行模糊处理
continue# 跳出这个循环
gray_frame = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
gray_frame = cv2.GaussianBlur(gray_frame,(21,21),0)
##打开系统默认的摄像头获得的视频图像,并将第一帧设置为整个输入的背景
#对于每个从该点以后读取的帧都会计算其与背景之间的差异
diff = cv2.absdiff(background, gray_frame) #计算背景帧与当前帧的差值
diff = cv2.threshold(diff,25,255,cv2.THRESH_BINARY)[1]#25为阈值,255为超过阈值被赋予的值
diff = cv2.dilate(diff,es,iterations = 2)#进行图片膨胀,iterations为膨胀次数为2,
#
目标跟踪---简单的实现运动物体检测(python)(1)
最新推荐文章于 2025-07-15 16:19:48 发布