首页 > 学院 > 开发设计 > 正文

用QT5实现视频采集

2019-11-09 14:33:23
字体:
来源:转载
供稿:网友

学习QT也有一段时间了,对QT稍有一点感觉,第一次自己写了一个相对有点用的程序,刚写完就献给广大热爱QT的好友,望你们参考,不对的地方请多多指教。

QT5 的用法我就不说了,不会的看看其他的教程。 首先建立工程,选择Widget类。

在.PRo文件中添加代码

QT += multimedia multimediawidgets

ui界面如下: 这里写图片描述 具体的控件用法我就不说了

widget.h的文件如下:

#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QCamera>#include <QCameraViewfinder>#include <QCameraImageCapture>#include <QPixmap>#include <QImage>#include <QDateTime>#include <QMessageBox>#include <QDesktopWidget>#include <QFileDialog>#include <QMovie>namespace Ui {class Widget;}class Widget : public QWidget{ Q_OBJECTpublic: explicit Widget(QWidget *parent = 0); ~Widget(); const QPixmap *pixmap; QString fileName;private slots: void on_start_clicked(); //开始按钮 void on_stop_clicked(); //停止按钮 void on_camerashort_clicked(); //截图按钮 void displayImage(int id, const QImage preview); void on_save_clicked(); //保存截图 void on_see_clicked(); //查看截图private: Ui::Widget *ui; QCamera * camera; //定义 QCameraViewfinder *cameraViewfinder; QCameraImageCapture *cameraImageCapture;};#endif // WIDGET_H

Widget.cpp的代码如下:

#include "widget.h"#include "ui_widget.h"Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget){ ui->setupUi(this); cameraViewfinder = new QCameraViewfinder; camera = new QCamera; camera->setViewfinder(cameraViewfinder); ui->CameraLayout->addWidget(cameraViewfinder); cameraImageCapture = new QCameraImageCapture(camera,parent); connect(cameraImageCapture,SIGNAL(imageCaptured(int,QImage)),this,SLOT(displayImage(int,QImage)));}Widget::~Widget(){ delete ui;}void Widget::displayImage(int id, const QImage image){ ui->label->setPixmap(QPixmap::fromImage(image));//将label指向照片,显示照片}void Widget::on_start_clicked() //开始{ camera->start();}void Widget::on_stop_clicked() //停止{ camera->stop();}void Widget::on_camerashort_clicked() //截图{ cameraImageCapture->capture();}void Widget::on_save_clicked() //保存截图{ pixmap =ui->label->pixmap(); fileName= QDateTime::currentDateTime().toString("yyyy-MM-ddHH-mm-ss") + ".jpg";//通过时间命名文件 if(!pixmap->save("C://Qt//Qt5.7.0//project//Camera01//savepicture//Camera"+fileName,"JPG")) { QMessageBox::information(this,"警告","保存错误!",QMessageBox::Ok); } else { QMessageBox::information(this,"祝贺","保存成功",QMessageBox::Ok); } //bool QImage::save ( const QString & fileName, const char * format = 0, int quality = -1 ) const; //第一个参数是文件名,第二个是格式,第三个是质量}void Widget::on_see_clicked() //查看截图{ QString filename1; filename1=QFileDialog::getOpenFileName(this, tr("选择图像"), "C:/", tr("Images (*.jpg)")); if(filename1.isEmpty()) { return; } else { QImage *img = new QImage; if(!(img->load(filename1))) //加载图像 { QMessageBox::information(this,"警告","打开图像失败",QMessageBox::Ok); delete img; return; } ui->label->setPixmap(QPixmap::fromImage(img->scaled(ui->label->size()))); //scaled(ui->label->size())指定文件的大小 }}

main.cpp的代码如下:

#include "widget.h"#include <Qapplication>int main(int argc, char *argv[]){ QApplication a(argc, argv); Widget w; w.show(); return a.exec();}

以上就是详细的代码和创建流程,适合新手入门学习。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表