You need to enable JavaScript to run this app. 如何通过Qt C++ GUI应用访问USB摄像头?有哪些相关参考示例?
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Qt C++ GUI应用访问USB摄像头?有哪些相关参考示例?

Qt C++ 访问USB摄像头参考实现

Qt 多媒体模块原生支持所有符合UVC标准的USB免驱摄像头,你之前找到的webcam相关示例绝大多数都可以直接兼容USB摄像头,不需要额外适配。

本地可直接获取的参考示例

如果你安装Qt Creator时勾选了「示例」安装组件,直接在Qt Creator欢迎页的示例搜索栏输入camera,就能找到官方提供的可直接编译运行的示例,推荐两个最匹配的:

  • Camera Example:纯C++ Widget实现,包含摄像头预览、拍照、录像、设备切换的完整逻辑,启动后会自动枚举所有已连接的USB摄像头,可直接选择目标设备调用
  • QML Camera Example:如果采用QML做界面可以参考这个,底层逻辑和C++版完全一致

最简实现代码片段

你也可以参考以下代码快速搭建最小可用的Demo:

  1. 首先在项目的.pro配置文件中添加多媒体模块依赖:
QT += multimedia multimediawidgets
  1. 头文件核心声明:
#include <QMainWindow>
#include <QCamera>
#include <QCameraViewfinder>
#include <QMediaDevices>
#include <QMediaCaptureSession>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
    QCamera *m_camera;
    QCameraViewfinder *m_viewfinder;
    QMediaCaptureSession *m_captureSession;
};
  1. 主窗口初始化核心逻辑:
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    // 枚举所有已连接的摄像头设备
    const auto availableCameras = QMediaDevices::videoInputs();
    for (const auto &cameraInfo : availableCameras) {
        // 可根据设备名称选择指定的USB摄像头
        qDebug() << "可用摄像头设备:" << cameraInfo.description();
    }

    // 初始化组件
    m_captureSession = new QMediaCaptureSession(this);
    // 这里可以传入上面枚举到的指定摄像头设备,默认使用系统默认摄像头
    m_camera = new QCamera(QMediaDevices::defaultVideoInput(), this);
    m_viewfinder = new QCameraViewfinder(this);

    // 绑定会话和输出组件
    m_captureSession->setCamera(m_camera);
    m_captureSession->setVideoOutput(m_viewfinder);

    // 将预览组件添加到布局中
    ui->verticalLayout->addWidget(m_viewfinder);
    // 启动摄像头
    m_camera->start();
}

MainWindow::~MainWindow()
{
    m_camera->stop();
    delete ui;
}

注意事项

  • 以上代码基于Qt 6编写,如果使用Qt 5,接口存在细微差异:Qt 5没有QMediaCaptureSession和QMediaDevices类,直接将QCamera和QCameraViewfinder绑定即可,核心逻辑完全一致
  • 仅支持符合UVC标准的免驱USB摄像头,目前市面绝大多数消费级、工业级USB摄像头都符合该标准
  • 如果代码枚举不到目标摄像头,先检查Windows设备管理器中摄像头是否正常识别,是否被其他应用占用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 06:36:00