QT打开摄像头采集

QT打开摄像头采集

今天好不容易把opencv的环境装好,然后想学习一下人脸识别的功能,但是在图书馆坐了4个多小时了,屁股疼就先写个摄像头采集的功能,明天继续学习吧,废话不多,嚼个奶片开始发车!!!!!!!!

我们设计我们的UI界面

非常简单!

UI界面设计

就这么简单,我们在Widget里显示图像,然后这个下拉框用来选择摄像头

然后我们来编写我们的代码

代码编写 

widget.h文件

#include <QWidget>
#include <QMouseEvent>
class QCamera;
class QCameraViewfinder;
class QCameraImageCapture;
class QCameraInfo;
class QCameraViewfinderSettings;

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private:
    Ui::Widget *ui;

    QCamera *camera;                   //相机
    QCameraViewfinder *viewfinder;     //取景器
    QList<QCameraInfo> cameras;        //相机列表
};

widget.cpp文件

#include "widget.h"
#include "ui_widget.h"
#include <QCamera>
#include <QCameraInfo>
#include <QCameraViewfinder>
#include <QDebug>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    // 获取所有可用的相机信息
    cameras = QCameraInfo::availableCameras();
    if(cameras.count() > 0) {
        // 如果有可用的相机,则使用第一个相机创建QCamera实例
        camera = new QCamera(cameras.at(0));
    }

    // 创建一个取景器QCameraViewfinder,并设置其父对象为当前Widget
    viewfinder = new QCameraViewfinder(this);
    // 将取景器设置为相机的取景器
    camera->setViewfinder(viewfinder);
    // 设置取景器的大小
    viewfinder->resize(600, 350);
    // 启动相机
    camera->start();

    // 添加初始化的相机选项到下拉框
    for(const QCameraInfo &cameraInfo:cameras) {
        ui->comboBox_cam->addItem(cameraInfo.description());
    }
    // 默认选择第一个相机
    ui->comboBox_cam->setCurrentIndex(0);

    // 连接下拉框camera的选择改变信号到槽函数,用于更换相机
    connect(ui->comboBox_cam, QOverload<int>::of(&QComboBox::activated), [=](int index){
        camera->stop();
        delete camera;
        camera = new QCamera(cameras[index]);
        camera->setViewfinder(viewfinder);
        camera->start();
    });
}

Widget::~Widget()
{
    delete ui;
    delete camera;
}

// 移除了captureImage函数和相关的信号连接

好嘞,去吃饭去了,再不去没饭了

Qt打开摄像头并显示视频流,通常可以使用`QCamera`和`QCameraViewfinder`这两个类。`QCamera`用于访问和控制摄像头设备,而`QCameraViewfinder`则用于显示来自摄像头的实时视频流。以下是一个简单的步骤说明: 1. 在你的Qt项目中包含必要的模块: 在`.pro`文件中添加: ```pro QT += multimedia ``` 2. 创建一个`QCamera`对象来控制摄像头。 3. 创建一个`QCameraViewfinder`对象,并将其设置为`QCamera`的viewfinder(即预览窗口)。 4. 启动摄像头预览。 5. 将`QCameraViewfinder`嵌入到你的应用程序界面中。 这里是一个简单的代码示例: ```cpp #include <QCamera> #include <QCameraViewfinder> #include <QVBoxLayout> #include <QWidget> // ... QCamera *camera = new QCamera(this); // 创建一个摄像头对象 QCameraViewfinder *viewfinder = new QCameraViewfinder(this); // 创建一个预览窗口 // 将摄像头与预览窗口连接起来 camera->setViewfinder(viewfinder); camera->start(); // 启动摄像头预览 // 将预览窗口添加到你的窗口布局中 QWidget *window = new QWidget; QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(viewfinder); window->setLayout(layout); window->show(); // 如果需要,可以设置摄像头的特定参数,例如选择摄像头设备、分辨率等 camera->setCameraDevice(QCamera::CameraDevicePrimary); // 使用默认摄像头 camera->setCaptureMode(QCamera::CaptureViewfinder); // 设置捕获模式为预览 ``` 注意,为了使上述代码能够正常工作,你需要确保你的开发环境已经安装了Qt Multimedia模块,并且你的开发板或电脑支持摄像头功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值