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

首頁 > 學院 > 開發設計 > 正文

用QT5實現視頻采集

2019-11-09 13:50:02
字體:
來源:轉載
供稿:網友

學習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();}

以上就是詳細的代碼和創建流程,適合新手入門學習。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 天镇县| 广昌县| 密云县| 昔阳县| 定州市| 于田县| 古田县| 永善县| 高唐县| 普安县| 海原县| 海林市| 兴国县| 松滋市| 开封县| 壶关县| 太康县| 连平县| 凤城市| 大姚县| 龙井市| 彩票| 上饶县| 邻水| 滦南县| 高要市| 象山县| 灌云县| 新宁县| 昭觉县| 玉树县| 时尚| 珲春市| 疏勒县| 洛南县| 弥勒县| 镇坪县| 涞源县| 偏关县| 城步| 克山县|