最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

信息:Qt调用摄像头一,基础版

来源:博客园


(相关资料图)

本示例,为纯Qt调用摄像头,功能比较简单,打开摄像头,设置参数,拍照

涉及到的功能有:

获取摄像头列表

获取摄像头分辨率

获取摄像头帧率

获取摄像头支持的视频模式

设置摄像头参数

拍照

QT       += core gui multimedia multimediawidgets printsupport
#include                   // 摄像头#include               // 摄像头信息#include               // 视频#include              // 视频显示窗口#include       // 拍照
#include "dialog.h"#include "ui_dialog.h"Dialog::Dialog(QWidget *parent)    : QDialog(parent)    , ui(new Ui::Dialog){    ui->setupUi(this);    // 初始化,读取摄像头信息    QList 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 resolution = dev->supportedViewfinderResolutions();    qDebug() << resolution.length();    for (int i=0; i< resolution.length(); i++) {        qDebug() << resolution.at(i).width() << "_" << resolution.at(i).height();    }    // 获取摄像头帧率    QList frameRate = dev->supportedViewfinderFrameRateRanges();    foreach (auto i, frameRate)    {        qDebug() << i.maximumFrameRate;    }    // 获取摄像头支持视频格式    QList 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;}

关键词: 显示窗口 完整信息 显示位置