本示例,为纯Qt调用摄像头,功能比较简单,打开摄像头,设置参数,拍照
涉及到的功能有:
获取摄像头列表
获取摄像头分辨率
获取摄像头帧率
获取摄像头支持的视频模式
设置摄像头参数
拍照
QT += core gui multimedia multimediawidgets printsupport
#include <QCamera> // 摄像头 #include <QCameraInfo> // 摄像头信息 #include <QVideoProbe> // 视频 #include <QVideoWidget> // 视频显示窗口 #include <QCameraImageCapture> // 拍照
#include "dialog.h" #include "ui_dialog.h" Dialog::Dialog(QWidget *parent) : QDialog(parent) , ui(new Ui::Dialog) { ui->setupUi(this); // 初始化,读取摄像头信息 QList<QCameraInfo> cameras = QCameraInfo::availableCameras(); foreach(const QCameraInfo &cameraInfo, cameras) { qDebug() << cameraInfo.deviceName(); // 摄像头完整信息 qDebug() << cameraInfo.description(); // 摄像头名称 } QCamera *dev = new QCamera(cameras.at(0)); // 创建设备 QVideoWidget *view = new QVideoWidget(ui->widget); // 创建显示窗口 || 取景器 view->setFixedSize(ui->widget->width(), ui->widget->height()); // 让视频适应显示窗口显示 dev->setCaptureMode(QCamera::CaptureVideo); // 设置捕捉模式为视频,CaptureViewfinder,CaptureVideo,CaptureStillImage dev->setViewfinder(view); // 设置显示位置 dev->load(); // 加载摄像头 // 获取分辨率列表 QList<QSize> resolution = dev->supportedViewfinderResolutions(); qDebug() << resolution.length(); for (int i=0; i< resolution.length(); i++) { qDebug() << resolution.at(i).width() << "_" << resolution.at(i).height(); } // 获取摄像头帧率 QList<QCamera::FrameRateRange> frameRate = dev->supportedViewfinderFrameRateRanges(); foreach (auto i, frameRate) { qDebug() << i.maximumFrameRate; } // 获取摄像头支持视频格式 QList<QVideoFrame::PixelFormat> pixelFormat = dev->supportedViewfinderPixelFormats(); foreach (auto i, pixelFormat) { qDebug() << i; } // 设置分辨率 & 帧率 (不能同时设置最大帧率和最小帧率,会报错) QCameraViewfinderSettings set; set.setResolution(QSize(3264, 2448)); set.setMaximumFrameRate(15.0); set.setPixelFormat(QVideoFrame::Format_Jpeg); dev->setViewfinderSettings(set); dev->start(); // 拍照 QCameraImageCapture *img = new QCameraImageCapture(dev); dev->searchAndLock(); img->capture("D:\\1.jpg"); dev->unlock(); } Dialog::~Dialog() { delete ui; }
标签:调用,Qt,dev,ui,Dialog,qDebug,include,摄像头 From: https://www.cnblogs.com/shiyixirui/p/17142126.html