随着科技的发展,监控摄像是越来越普及的一种安全保障方式。而使用Python编程语言可以很方便地实现监控拍摄视频的功能。
# 导入必要的模块 import cv2 import time # 设置摄像头 capture = cv2.VideoCapture(0) capture.set(cv2.CAP_PROP_FRAME_WIDTH, 1280) capture.set(cv2.CAP_PROP_FRAME_HEIGHT, 720) # 设置帧差法阈值 threshold = 30 # 初始化 first_frame = None # 循环监控拍摄 while True: # 获取当前帧 ret, frame = capture.read() if not ret: break # 灰度化处理 gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) gray = cv2.GaussianBlur(gray, (21, 21), 0) # 初始化第一帧 if first_frame is None: first_frame = gray continue # 计算差异帧 frame_delta = cv2.absdiff(first_frame, gray) # 阈值过滤 thresh = cv2.threshold(frame_delta, threshold, 255, cv2.THRESH_BINARY)[1] # 膨胀处理 thresh = cv2.dilate(thresh, None, iterations=2) # 获取轮廓 contours, hierarchy = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) # 遍历轮廓并画出矩形框 for c in contours: if cv2.contourArea(c)< 1000: continue (x, y, w, h) = cv2.boundingRect(c) cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2) # 显示图像 cv2.imshow("video", frame) key = cv2.waitKey(1) & 0xFF # 退出循环 if key == ord("q"): break # 释放资源 capture.release() cv2.destroyAllWindows()
通过上述代码,我们就能够调用电脑摄像头并实现监控拍摄视频的功能。代码中使用的是帧差法算法,通过比较不同时间段的帧图像差异,实现了检测物体移动的功能。同时,我们还可以通过改变阈值等参数,调整检测效果,实现更高精度的监控。
本文可能转载于网络公开资源,如果侵犯您的权益,请联系我们删除。
0