国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

用QT5實現(xiàn)視頻采集

2019-11-09 14:33:23
字體:
供稿:網(wǎng)友

學(xué)習(xí)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; //第一個參數(shù)是文件名,第二個是格式,第三個是質(zhì)量}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();}

以上就是詳細的代碼和創(chuàng)建流程,適合新手入門學(xué)習(xí)。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 乐昌市| 黄梅县| 象州县| 桑植县| 巴南区| 嘉峪关市| 大洼县| 城固县| 德安县| 吴旗县| 延边| 平利县| 宁陕县| 定安县| 邳州市| 太谷县| 华坪县| 丽水市| 奎屯市| 海口市| 新营市| 南昌市| 沅陵县| 浦北县| 若羌县| 阿瓦提县| 石楼县| 若尔盖县| 长兴县| 辽宁省| 阿荣旗| 五常市| 阜康市| 利川市| 香河县| 广丰县| 田阳县| 班戈县| 凤城市| 特克斯县| 高雄县|