Python OpenCV 运动检测 - 调整变化帧参数
///'import cv2//nimport numpy as np//nfrom playsound import playsound//nimport time//n//n# 前一帧图像//nprevious_frame = None//n# 变化帧计数器//nframe_count = 0//n# 开始时间//nstart_time = time.time()//n//n# 打开摄像头//nvideo_capture = cv2.VideoCapture(0)//n//nwhile True://n # 读取当前帧//n ret, frame = video_capture.read()//n//n # 将当前帧转换为灰度图像//n gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)//n # 对灰度图像进行高斯模糊//n gray = cv2.GaussianBlur(gray, (21, 21), 0)//n//n if previous_frame is None://n # 如果是第一帧,则将当前帧作为前一帧//n previous_frame = gray//n continue//n//n # 计算当前帧与前一帧的差异//n frame_delta = cv2.absdiff(previous_frame, gray)//n # 使用阈值将差异图像二值化//n thresh = cv2.threshold(frame_delta, 30, 255, cv2.THRESH_BINARY)[1]//n # 对二值图像进行膨胀操作//n thresh = cv2.dilate(thresh, None, iterations=2)//n//n # 寻找轮廓//n contours, _ = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)//n//n # 初始化变化标识符//n motion_detected = False//n//n for contour in contours://n # 如果轮廓面积小于一定阈值,则忽略//n if cv2.contourArea(contour) < 500://n continue//n//n # 计算轮廓的边界框//n (x, y, w, h) = cv2.boundingRect(contour)//n # 在当前帧中绘制边界框//n cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)//n//n # 设置变化标识符为True//n motion_detected = True//n//n if motion_detected://n frame_count += 1//n # 如果变化帧计数器达到一定阈值(例如10帧),则开始计时//n if frame_count >= 10://n elapsed_time = time.time() - start_time//n # 如果变化持续一分钟//n if elapsed_time >= 60://n # 播放报警声音//n playsound(/'alarm.wav/')//n cv2.putText(frame, /'Alarm/', (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2)//n cv2.putText(frame, time.strftime(/'%Y-%m-%d %H:%M:%S/', time.localtime()), (10, 60), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2)//n else://n # 重置变化帧计数器和开始时间//n frame_count = 0//n start_time = time.time()//n//n # 显示当前帧//n cv2.imshow(/'Motion Detection/', frame)//n//n # 按'q'键退出循环//n if cv2.waitKey(1) & 0xFF == ord('q')://n break//n//n# 释放摄像头和关闭窗口//nvideo_capture.release()//ncv2.destroyAllWindows()//n//n变化帧参数可以通过调整阈值来控制。在代码中,使用了阈值30来将差异图像二值化,可以尝试增大或减小这个值来调整变化帧的敏感度。较大的阈值会使得只有较大的变化才被检测到,而较小的阈值则会使得较小的变化也能被检测到。可以根据具体的需求进行调整。/
原文地址: https://www.cveoy.top/t/topic/p3BB 著作权归作者所有。请勿转载和采集!