如何在Qt 5.3中使用QCamera设置图像分辨率?

问题描述:

我正在使用Qt Qcamera来捕获Windows Surface Pro平板电脑上的图像。我已经写了一小段代码来检查QCamera的功能,但是在捕获图像后,保存的图像具有非常低的分辨率,即640 * 360,尽管Surface Pro的后置摄像头支持1280 * 720。即使支持分辨率的QList总是返回空白。我到处寻找,但找不到可能的解决方案,任何人都可以请帮忙吗?如何在Qt 5.3中使用QCamera设置图像分辨率?

这里是我使用的代码:

#include "camera.h" 
#include <QCamera> 
#include <QCameraImageCapture> 
#include <QCameraViewfinder> 
#include <QDebug> 
#include<QMultimedia> 

Camera::Camera(QWidget *parent) : 
    QWidget(parent) 
{ 

    QByteArray cameraDevice; 
    int count = QCamera::availableDevices().count(); 

    int cameraId = 1; 


    QList<QByteArray> cameradev = QCamera::availableDevices(); 
    QByteArray camdevice = cameradev[cameraId]; 

    QCamera *camera = new QCamera(camdevice); 

    QString description = camera->deviceDescription(camdevice); 
    qDebug() <<"Device Name"<< description; 

    QCameraViewfinder *viewfinder = new QCameraViewfinder(); 
    viewfinder->showMaximized(); 
    camera->setViewfinder(viewfinder); 
    QCameraImageCapture *imageCapture = new QCameraImageCapture(camera); 
    //camera->setCaptureMode(QCamera::CaptureStillImage); 
    camera->start(); 
    QList<QSize> resolutions = imageCapture->supportedResolutions();//returns  always empty 
    QImageEncoderSettings imageSettings; 
    imageSettings.setCodec("image/jpeg"); 
    imageSettings.setResolution(1280, 720); 
    imageCapture->setEncodingSettings(imageSettings); 
    imageCapture->capture("D:/1.jpg"); 
    camera->searchAndLock(); 
    camera->unlock(); 
    qDebug() << camera->error();  
} 

那么它似乎是问题是使用Qt版本,这个问题在Qt的固定5.5及以上版本,并有可能得到一个相机的所有受支持的分辨率。 虽然谢谢!