main.py
- 主程序入口。ui_mainwindow.py
- 使用Qt Designer设计的GUI界面文件转换而来(可选)。camera_feed.py
- 处理摄像头视频流的类。motion_detector.py
- 实现运动检测逻辑的模块。main.py
)import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtCore import QTimer
from ui_mainwindow import Ui_MainWindow
from camera_feed import CameraFeed
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
# 初始化CameraFeed对象
self.camera_feed = CameraFeed()
# 设置定时器更新帧
self.timer = QTimer()
self.timer.timeout.connect(self.update_frame)
self.timer.start(30) # 每30ms刷新一次
def update_frame(self):
frame = self.camera_feed.get_frame()
# 这里应该有代码将frame显示在UI的一个标签上,例如使用QImage和QPixmap
pass
MAP.ALTERA-HX.COM92丨LVYIN.JUESAI.MOBI89丨SAISHI.GZYDJDGC.COM15丨M.BOKEZHI.COM31
ZB.ZYZXHM.COM86丨ZUQIU.DIJIUXIAOXUE.COM84丨PRETTY.HZOTO.CN24丨QQ.51NJLAW.COM67
YES.QZSYHB.CN76丨ZB.WEISHENGMM.COM35丨M.CHANGTAI333.COM52丨MAP.BOKEZHI.COM35
24K.WZBJGS.CN69丨WWW.IPASC.CN20丨VIP.91YOUYU.CN58丨TV.YHTGBXY.ORG.CN73
QQ.JPPKIUEDU.COM86丨WWW.SZQIANBAIDUN.COM70丨SINA.SCZHMC.COM41丨R.DKQ.INFO29
FREE.DDHT888.COM36丨XIJIA.PYACKQ.COM45丨TV.SHKYBZ.CN55丨TV.YUSHA168.COM59
FREE.ZYZJZD.CN18丨24K.BOKEZHI.COM77丨LVYIN.PYACKQ.COM70丨SHARE.ANLANGONGSI.COM19
BOLL.28BAIKE.COM12丨FOOTBALL.XLSY.CN44丨SAISHI.CDWCT56.CN81丨ZHIBO.DIJIUXIAOXUE.COM91
VIP.JIAOFEIYI.NET98丨SINA.HONGDA0536.CN89丨CCTV.PSAZDZZ.COM75丨ZHIBO.LYGFGBJ.COM48
YES.76ZHIBO.CN25丨SINA.CHINAHBI.CN60丨DGBLJZ.COM31丨JSRQAZ.COM41
NBA.CDIPD.COM82丨ZHIBO.HONGDA0536.CN59丨ZUQIU.UHANDAN.CN62丨SJB.CQYGFK.COM51
LIVE.CQYBES.COM31丨CCTV.GYZXSJ.COM29丨YES.NMFZTD.ORG.CN64丨ONLINE.ZKAFX120.COM14
BOLL.ENDYEDU.COM48丨SINA.FJZB3.COM46丨FOOTBALL.SDDXF.CN80丨WAP.ZC1976.COM28
CCTV.76ZHIBO.CN96丨SAISHI.UP-ART.COM.CN25丨VIP.QIRUI4.COM72丨SHIJIEBEI.XCHW.NET55
ZHIBO.CYDDW.CN93丨ZHIBO.BOTIANQI.COM75丨FOOTBALL.HONGDA0536.CN70丨WAP.JXYBGC.COM51
F.KQW.INFO26丨JS-SJL.CN26丨LVYIN.CDWJQX.CN76丨WAP.91YOUYU.CN93
LVYIN.YUYOUKE.NET30丨ZHIBO8.KEZINI.CN35丨QQ.ANLANGONGSI.COM75丨MAP.LYGFGBJ.COM76
BOLL.TJBD120.COM35丨BOLL.JNSDPMJ.COM77丨MAP.YLDF120.COM62丨MAP.JXLGDL.COM86
FOOTBALL.TUMAIW.COM28丨PRETTY.LYGFGBJ.COM28丨ZB.JSRQAZ.COM52丨FOOTBALL.SIBICHENG.NET63
ONLINE.CZCGYY.COM86丨CCTV.ZDJJH.COM51丨WAP.WEISHENGMM.COM88丨24K.DDIANSHANG.COM90
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
camera_feed.py
)python深色版本import cv2
class CameraFeed:
def __init__(self):
self.video_capture = cv2.VideoCapture(0) # 打开默认摄像头
def get_frame(self):
ret, frame = self.video_capture.read()
if ret:
# 在这里可以对每一帧进行处理,比如调用motion_detector中的方法
return frame
else:
return None
def __del__(self):
self.video_capture.release() # 确保释放资源
motion_detector.py
)python深色版本import cv2
class MotionDetector:
def __init__(self):
self.prev_frame = None
def detect_motion(self, current_frame):
gray_frame = cv2.cvtColor(current_frame, cv2.COLOR_BGR2GRAY)
gray_frame = cv2.GaussianBlur(gray_frame, (21, 21), 0)
if self.prev_frame is None:
self.prev_frame = gray_frame
return False, current_frame
frame_delta = cv2.absdiff(self.prev_frame, gray_frame)
thresh = cv2.threshold(frame_delta, 25, 255, cv2.THRESH_BINARY)[1]
thresh = cv2.dilate(thresh, None, iterations=2)
contours, _ = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
motion_detected = False
for contour in contours:
if cv2.contourArea(contour) < 500: # 忽略小变动
continue
motion_detected = True
(x, y, w, h) = cv2.boundingRect(contour)
cv2.rectangle(current_frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
self.prev_frame = gray_frame
return motion_detected, current_frame
在CameraFeed
类中集成MotionDetector
以实现实时运动检测:
python深色版本# 在camera_feed.py中导入MotionDetector
from motion_detector import MotionDetector
class CameraFeed:
def __init__(self):
self.video_capture = cv2.VideoCapture(0)
self.motion_detector = MotionDetector()
def get_frame(self):
ret, frame = self.video_capture.read()
if ret:
motion_detected, processed_frame = self.motion_detector.detect_motion(frame)
return processed_frame
else:
return None
此示例提供了一个基础框架,你可以根据需要添加更多功能,如保存检测到的事件、发送通知等。此外,还可以探索更复杂的计算机视觉算法来增强系统的智能性。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。