You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PySide2(Qt5)提升QCamera/QCameraViewfinder的帧率

摄像头监控应用帧率优化问题

我正在开发一个基于PySide2(Qt5)的简易摄像头监控拍照应用,原本参考的是PySide6(Qt6)的摄像头示例,但因为部署环境是i386架构的32位Debian 11,只能使用PySide2(版本5.15.2.1)。以下是我的可用代码:

from pathlib import Path
from tempfile import NamedTemporaryFile
from PySide2 import QtWidgets, QtMultimedia, QtMultimediaWidgets


class SimpleCameraGUI(QtWidgets.QMainWindow):
    def __init__(self):
        super(SimpleCameraGUI, self).__init__(None)
        # main GUI elelements
        central_widget = QtWidgets.QWidget()
        hlayout = QtWidgets.QHBoxLayout()
        vlayout = QtWidgets.QVBoxLayout()
        self.start = QtWidgets.QPushButton('Start camera')
        self.stop = QtWidgets.QPushButton('Stop camera')
        self.take_pic = QtWidgets.QPushButton('Take Picture')
        self.camera_widget = QtMultimediaWidgets.QCameraViewfinder()
        # elements to Layout
        hlayout.addWidget(self.start)
        hlayout.addWidget(self.stop)
        hlayout.addWidget(self.take_pic)
        vlayout.addWidget(self.camera_widget)
        vlayout.addLayout(hlayout)
        central_widget.setLayout(vlayout)
        self.setCentralWidget(central_widget)
        # camera elements
        self.info = QtMultimedia.QCameraInfo()
        self.camera = QtMultimedia.QCamera(self.info.defaultCamera())
        self.image = QtMultimedia.QCameraImageCapture(self.camera)
        self.camera.setViewfinder(self.camera_widget)
        # connections
        self.start.clicked.connect(self.camera.start)
        self.stop.clicked.connect(self.camera.stop)
        self.take_pic.clicked.connect(self.save_temp_picture)
        # show GUI
        self.show()
    
    def save_temp_picture(self):
        filename = NamedTemporaryFile(suffix='.jpg', delete=True)
        self.image.capture(filename.name)
        QtWidgets.QMessageBox.information(
            None,
            'Temporary file saved',
            f'Location: <a href={Path(filename.name).as_uri()}>{filename.name}</a>'
        )
    

if __name__ == '__main__':
    app = QtWidgets.QApplication()
    win = SimpleCameraGUI()
    win.resize(640, 480)
    app.exec_()

应用能正常运行,但QCameraViewfinder部件内的视频帧率极低。我猜测这和帧率设置有关,但找不到修改参数的方法。试过使用QVideoWidget替代QCameraViewfinder,结果帧率依旧很低;也尝试过调用QCamera的setViewfinderSettings方法,但不清楚具体该怎么用。

内容的提问来源于stack exchange,提问作者kstenio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 06:31:02