QT入门(十四) 您所在的位置:网站首页 mac有摄像头功能吗手机 QT入门(十四)

QT入门(十四)

2023-07-31 05:48| 来源: 网络整理| 查看: 265

这里写自定义目录标题 调用创建摄像头对象开启&关闭摄像头截取视频流中的图片查询图片并显示

调用摄像头,显示摄像头视频,截取图片,保存截取的图片,显示数据库的表格,点击表格中的数据,显示图片

在这里插入图片描述 在这里插入图片描述 摄像头相当于一个视频流,是通过输入或捕捉视频的硬件。在不同的系统环境或者是硬件条件下,需要选择不同的处理方法,在windows系统中,可以使用QT中提供的摄像头相关的类,来处理摄像头信息。

调用创建摄像头对象

同时创建一个数据表,表中记录拍摄时间和图片的存储路径

#include "widget.h" #include "ui_widget.h" #include #include #include #include Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); //获取系统的所有可用的摄像头------------------------------------------------------- QList infos = QCameraInfo::availableCameras(); //第二步 遍历一下列表 //每一次取出的infos中的一个数据放入info中 foreach(QCameraInfo info , infos) { //打印一下摄像头的设备名称和设备信息 qDebug() qDebug()setEnabled(false); //截图按钮停止,是灰的,不能动 } Widget::~Widget() { delete ui; } 开启&关闭摄像头 //开启摄像头 void Widget::on_pushButton_clicked() { //构造一下摄像头对象 ca = new QCamera(ui->comboBox->currentText().toUtf8(),this); ui->widget->show(); //创建截图对象的内存 截图软件要和摄像头对象相互关联 cap = new QCameraImageCapture(ca); //将截图信号与显示截图的槽函数关联一下 //连接 截图信号和显示截图的槽函数 一旦发出imageCaptured截图信号,就触发截图的槽函数 connect(cap,&QCameraImageCapture::imageCaptured,this,&Widget::show_pic); //先配置一下widget //让ui->widget和主的widget成为兄弟关系 QCameraViewfinder *v = new QCameraViewfinder(ui->widget); v->resize(ui->widget->size()); ca->setViewfinder(v); v->show(); //启动摄像头 ca->start(); ui->JT->setEnabled(true); } //停止 void Widget::on_TZ_clicked() { //关闭摄像头 ca->stop(); //清空显示屏 假装清空 ui->widget->hide();//隐藏 } 截取视频流中的图片

截取一张 截图多张,与数据表结合,写入数据表中

//从视频中截取图片 void Widget::on_JT_clicked() { // // // //保存一帧的数据 地址 // cap->capture("D:/qt_project/day8two/capture/1.jpg"); // //在ui中显示一下截图的图片 在这个路径中去得到这个图片 // QPixmap pix("D:/qt_project/day8two/capture/1.jpg"); // //设置图片和label一样大 // pix = pix.scaled(ui->label_pic->size()); // ui->label_pic->setPixmap(pix); //------------------ //保存多张图片 QTime t = QTime::currentTime(); QString str = "D:/qt_project/day8two/capture/"+t.toString("hh-mm-ss")+".jpg"; qDebug()setTable("captbl"); //创建一条空的记录 QSqlRecord record = model->record(); //把str的内容写入picpath这个属性中 record.setValue("picpath",str); //尾插入法 -1是尾部 if(model->insertRecord(-1,record)) { qDebug()database().commit(); } //显示截取图片的槽函数 void Widget::show_pic(int id, const QImage &pre) { //id 打印的是截图的张数 qDebug()size()); ui->label_pic->setPixmap(pix); } 查询图片并显示 //查询 void Widget::on_pushButton_2_clicked() { //先模型绑定 model->setTable("captbl"); //显示一下模型的内容 ui->tableView->setModel(model); //查询 model->select(); } //需要在ui界面中创建一个tabelview 右键 转到槽 //单击列表中的选项 显示对应的图片 void Widget::on_tableView_clicked(const QModelIndex &index) { QPixmap map = QPixmap(index.data().toString());//打开图片的路径 qDebug()size()); ui->label_pic->setPixmap(map); }


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有