qt学习:多媒体Multimedia摄像头

目录

注意

头文件

模块

步骤

实例

定义一个摄像头对象和一个摄像头拍照对象

在构造函数里获取当前电脑上所有可以用的摄像头存入链表

启动摄像头按钮点击事件

退出按钮点击事件

拍照按钮点击事件

保存图片槽函数定义和实现


摄像头在Qt Multimedia多媒体模块里

QCamera可与用于取景器显示的QCameraViewfinder、视频录制的QMediaRecorder、图像拍摄的QCamerAmageCapture一起使用

可以用QCameraInfo列出可以使用的相机并选择要使用的相机

摄像头功能

  • 实时画面QCameraViewfinder
  • 录像QMediaRecorder
  • 抓照QCameralmageCa

注意

摄像头类QCamera先通过绑定取景器显示QCameraViewfinder来获取摄像头的数据,再将取景器显示QCameraViewfinder与要显示的界面控件绑定才可以显示到界面控件上。

头文件

#include 
#include //摄像头类
#include //摄像头取景器
#include //摄像头拍照

模块

QT       += core gui multimedia multimediawidgets

步骤

  1. 定义一个摄像头对象和一个摄像头拍照对象
  2. 获取当前电脑上所有可以用的摄像头存入链表
  3. 实例化一个摄像头对象和摄像头取景器对象
  4. 取景器和ui控件进行绑定
  5. 取景器显示
  6. 将摄像头对象与取景器对象进行绑定
  7. 新疆一个图像对象
  8. 当捕捉到画面就保存下来
  9. 设置静态捕捉
  10. 启动摄像头
  11. 拍照
  12. 保存图片
  13. 退出摄像头

实例

定义一个摄像头对象和一个摄像头拍照对象

private:
    QCamera *camera;//摄像头对象
    QCameraImageCapture* imageCapture;//摄像头拍照类的对象

在构造函数里获取当前电脑上所有可以用的摄像头存入链表

    //获取当前主机上 所有可用的摄像头列表
    const QList cameras = QCameraInfo::availableCameras();
    //将摄像头列表显示到下拉控件中
    for(int i=0; icomboBox->addItem(cameras.at(i).deviceName());
    }

启动摄像头按钮点击事件

    //实例化一个摄像头类的对象,参数为上面列表中的摄像头
    //可以选择默认的摄像头QCameraInfo::defaultCamera()
    camera = new QCamera(ui->comboBox->currentText().toUtf8());
    //实例化一个摄像头取景器类的对象
    //取景器跟当前界面上的UI控件进行绑定
    QCameraViewfinder *viewfinder = new QCameraViewfinder(ui->label_show);
    //根据控件的大小调整取景器的大小
    viewfinder->resize(ui->label_show->size());
    //取景器显示
    viewfinder->show();
    //将摄像头对象与取景器对象进行绑定
    //也就是让摄像头拍摄到的画面显示到取景器控件上
    camera->setViewfinder(viewfinder);

    //如果需要拍照就要下面的步骤,不需要可以不用,但也要启动摄像头
    //新建摄像头的拍照对象
    imageCapture = new QCameraImageCapture(camera);
    //当捕捉到画面之后,会发送一个信号,将信号关联函数,在函数中保存下来
    connect(
        imageCapture,
        &QCameraImageCapture::imageCaptured,
        this,
        &Widget::onSaveCaptureImage
    );
    //设置成静态捕捉,也就是说捕捉静态画面
    camera->setCaptureMode(QCamera::CaptureStillImage);

    //启动命令
    camera->start();

退出按钮点击事件

    camera->stop();
    delete camera;

拍照按钮点击事件

    //捕捉图片,捕捉后会触发一个信号,调用槽函数来实现保存图片
    imageCapture->capture();

保存图片槽函数定义和实现

//定义
private slots:
    void onSaveCaptureImage(int id, const QImage &preview);

//实现
void Widget::onSaveCaptureImage(int id, const QImage &preview)
{
    //通过调用QIamge对象来保存图片
    preview.save("1.bmp");
}

你可能感兴趣的:(qt,qt,学习,java)