Qcamera

QTQcamera的使用

关于Qcamera的简介

qcamera是基于qt平台用于读取计算机摄像头视频信号的接口函数,其优势为qt在windows,Android,ios等操作系统时,具有更快的响应速度,更高的帧数,更低的系统占用。为后续开发以opencv为基础的计算机视觉软件做前期准备。

代码部分

.pro工程文件

创建Qt Widgets Application工程,并添加QT +=multimedia,QT+=multimediawidgets

QT       += core gui multimedia   multimediawidgets serialport

.h文件

#include 
#include 
#include 
#include 

include 将Qcamera调用至工程

include 摄像头取景器库函数,显示摄像头实时画面

include 获取摄像头当前帧,截图拍照

include 提供当前可用视频设备信息以及摄像头接口信息

  QCamera *camera;//定义摄像头指针对象
  QCameraViewfinder *viewfind;//定义取景器指针对象
  QList cameras;//定义可用摄像头序列信息列表
  QCameraImageCapture *imageCapture;//定义摄像头当前帧

.cpp文件

     cameras = QCameraInfo::availableCameras();
     foreach(const QCameraInfo &cameraInfo, cameras) {
         qDebug() << "CameraInfo:" << cameraInfo;
         ui->comboBox->addItem(cameraInfo.description())
     }

获取当前可用摄像头信息,并显示给comboBox控件,方便用户选择使用摄像头

void MainWindow::on_comboBox_activated(int index)
{
    
    qDebug()<<"Index"<< index <<": "<< ui->comboBox->currentText();
    camera->stop();//关闭摄像头
    camera = new QCamera(cameras[index]);//设定摄像头
    camera->setCaptureMode(QCamera::CaptureVideo);//设置摄像头模式

    viewfind = new QCameraViewfinder(this);//打开取景器
    ui->horizontalLayout->addWidget(viewfind);//将取景器放入控件
   // ui->ImageView->setScaledContents(true);
    camera->setViewfinder(viewfind);//相机匹配取景器

    imageCapture = new QCameraImageCapture(camera);
    connect(imageCapture, SIGNAL(imageCaptured(int, QImage)), this, SLOT(Left_imageCaptured(int, QImage)));
    //启动截图
    camera->start();//启动摄像头
}
void MainWindow::Left_imageCaptured(int id, const QImage &preview)
{
 ui->label->setPixmap(QPixmap::fromImage(preview.scaled(ui->label->size())));
}//指定位置显示截图

comboBox控件选择摄像头并打开

 imageCapture->capture("3A.jpg");

截图命令,capture参数为所得图片名称及格式,路径为电脑默认图片路径。

可视化布局部分

comboBox控件

从用户角度来看,comboBox控件是由一个文本输入控件和一个下拉菜单组成的。用户可以从一个预先定义的列表里选择一个选项,同时也可以直接在文本框里面输入文本。本文中使用comboBox控件实现向用户展现可用摄像头的信息和期望摄像头的选择。

horizontalLayout控件

水平布局控件,用于放置取景器,实现取景器随着软件界面放大或缩小。

label控件

用来存放截到的图像,.scaled(ui->label->size())使图像在宽度和高度上的拉伸或压缩以适应软件界面变化。

程序源码

你可能感兴趣的:(QT,qt)