Pyside2+opencv按钮控制摄像头开关

该代码示例展示了一个基于Pyside2GUI框架和OpenCV库的应用,用于在界面上通过按钮开关摄像头。程序创建了一个主窗口,包含一个标签显示摄像头画面和一个按钮来切换摄像头的开启和关闭。当点击按钮时,会读取摄像头视频流并实时更新显示,同时释放或初始化摄像头资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Pyside2+opencv按钮控制摄像头开关

import cv2
from PySide2.QtWidgets import *
from PySide2.QtGui import QImage, QPixmap
from PySide2.QtCore import Qt, QTimer

class CameraApp(QMainWindow):
    def __init__(self):
        super().__init__()

        self.initUI()

        self.camera = cv2.VideoCapture(0)  # Use the default camera (index 0)
        self.is_camera_running = True
        self.timer = QTimer(self)
        self.timer.timeout.connect(self.update_frame)
        self.timer.start(30)  # Update frame every 30 milliseconds (adjust as needed)

    def initUI(self):
        central_widget = QWidget()
        layout = QVBoxLayout(central_widget)

        self.label = QLabel("摄像头画面显示区域")
        self.label.setAlignment(Qt.AlignCenter)
        layout.addWidget(self.label)

        self.toggle_button = QPushButton("开关摄像头")
        self.toggle_button.clicked.connect(self.toggle_camera)
        layout.addWidget(self.toggle_button)

        self.setCentralWidget(central_widget)

        self.setWindowTitle("Camera App")
        self.setGeometry(100, 100, 640, 480)

    def update_frame(self):
        if self.is_camera_running:
            ret, frame = self.camera.read()
            if ret:
                frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
                h, w, ch = frame.shape
                bytes_per_line = ch * w
                q_image = QImage(frame.data, w, h, bytes_per_line, QImage.Format_RGB888)
                pixmap = QPixmap.fromImage(q_image)
                self.label.setPixmap(pixmap.scaled(self.label.size(), Qt.KeepAspectRatio, Qt.SmoothTransformation))

    def toggle_camera(self):
        if self.is_camera_running:
            self.camera.release()
        else:
            self.camera = cv2.VideoCapture(0)
        self.is_camera_running = not self.is_camera_running

if __name__ == '__main__':
    app = QApplication([])

    window = CameraApp()
    window.show()

    app.exec_()

在这里插入图片描述

根据论文内容,答辩可视化界面应包含以下核心功能和交互元素: --- ### **界面布局与核心功能模块** #### **1. 实时视频展示区(主界面)** - **功能**: - 实时显示摄像头/视频文件的处理画面。 - 动态标注检测框(行人为绿色框,车辆为蓝色框)及跟踪ID(如 `ID-50`)。 - 显示虚拟边界(电子围栏)的红色虚线或区域高亮。 - 越界目标触发红色闪烁框,并在画面侧边记录越界事件(如 `ID-63 越界,时间:14:35:22`)。 - 展示当前帧率(FPS)、检测精度等性能指标。 #### **2. 控制面板(侧边栏或底部栏)** - **按钮与交互**: - **视频源选择**: - 摄像头/本地文件/RTSP流切换按钮。 - 上传视频文件功能(支持拖拽或浏览)。 - **电子围栏设置**: - 绘制工具按钮(矩形、多边形),允许在视频画面中动态设置虚拟边界。 - 清除/保存当前围栏配置按钮。 - **系统控制**: - 开始/暂停处理按钮。 - 重置统计按钮(清零计数和越界记录)。 - 报警音效开关(启用/禁用声音提醒)。 - **数据保存**: - 导出越界事件记录(CSV或日志文件)。 - 保存当前画面截图。 #### **3. 统计信息面板(右侧或下方)** - **功能**: - **实时计数**: - 显示当前画面中行人/车辆总数(如 `行人:UP 18 | DOWN 9`)。 - 分区域统计(如入口/出口流量)。 - **越界记录**: - 滚动列表展示越界事件(目标ID、时间、位置)。 - 支持点击事件查看对应视频片段回放。 - **历史数据图表**: - 折线图展示时间段内流量变化(如每小时行人/车辆数量)。 - 柱状图对比不同区域的越界频率。 #### **4. 算法性能监控(顶部状态栏)** - **显示内容**: - 当前帧率(FPS)、检测耗时(ms)、跟踪稳定性(如目标丢失率)。 - 硬件资源占用(CPu
最新发布
05-07
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悸尢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值