您的位置:首页 > 财经 > 产业 > QT打开摄像头采集

QT打开摄像头采集

2024/12/21 20:32:27 来源:https://blog.csdn.net/weixin_70293633/article/details/142182420  浏览:    关键词: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_OBJECTpublic: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,并设置其父对象为当前Widgetviewfinder = 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函数和相关的信号连接

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com