知識
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價值,我們在追求其視覺表現(xiàn)的同時,更側(cè)重于功能的便捷,營銷的便利,運(yùn)營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏壧峁┍憬莸闹С郑?
Qt調(diào)用電腦攝像頭寫一個相機(jī)小程序
發(fā)表時間:2020-10-19
發(fā)布人:葵宇科技
瀏覽次數(shù):141
文┞仿目次
- 媒介
- 一、相機(jī)瑯綾擎的重要功能介紹
- 二、代碼實(shí)現(xiàn)
- 1.工程目次構(gòu)造
- 2.各文件代碼:
- 總結(jié)
媒介
今天我們來應(yīng)用Qt寫一個相機(jī)小法度榜樣。
一、相機(jī)瑯綾擎的重要功能介紹
- 這張是一開端運(yùn)行的界面,有一個窗口顯示攝像頭捕獲的畫面,還有兩個按鈕控件,撲晡攙下角還有一個label控件(下張圖片可見具體地位)。
- 當(dāng)我們開端點(diǎn)荒┝寺氛按鈕,此時就會應(yīng)用label控件來顯示一個小的┞氛片。具體如下:
- 左下角顯示的┞氛片就是應(yīng)用label控件來承載的,這時我們再應(yīng)用鼠標(biāo)點(diǎn)擊label控件(即左下角的小圖片), 這是會創(chuàng)建一個新的窗口, 顯示我們方才拍的┞氛片。具體如下:
- 第3步的時刻我們點(diǎn)擊保存按鈕的話就會彈出一個保存文件的窗口,具體如下:
- 就是以上的幾點(diǎn)小功能了
二、代碼實(shí)現(xiàn)
1.工程目次構(gòu)造
clicklabel.h和clicklabel.cpp:
這兩個文件重要實(shí)現(xiàn)了label的點(diǎn)擊功能,類似于使label也有按鈕的功能。
mainwindow.h:
這瑯綾擎重要定義了很多變量,便利實(shí)現(xiàn)旌旗燈號與槽的功能。
mainwindow.cpp:
這瑯綾擎重要實(shí)現(xiàn)了調(diào)用攝像頭,顯示畫面,拍┞氛,保存照片等功能。具體大年夜家可以參考下面代碼。
mainwindow.ui
這瑯綾擎主如果界面構(gòu)造。
2.各文件代碼:
clicklabel.h:
#ifndef CLICKLABEL_H
#define CLICKLABEL_H
#include <QWidget>
#include <QLabel>
#include <QDebug>
#include <QMouseEvent>
class ClickLabel : public QLabel
{
Q_OBJECT
public:
ClickLabel(QWidget * parent = 0) : QLabel(parent){}
~ClickLabel(){}
public:
signals:
void clicked1(ClickLabel * click);
protected:
void mousePressEvent(QMouseEvent *e);
};
#endif // CLICKLABEL_H
clicklabel.cpp:
#include "clicklabel.h"
void ClickLabel::mousePressEvent(QMouseEvent *)
{
emit clicked1(this); //發(fā)送自定義旌旗燈號
}
mainwindow.h:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QCamera>
#include <QCameraViewfinder>
#include <QCameraImageCapture>
#include <QImage>
#include <QLabel>
#include <QWidget>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
QString fileName;
QImage image;
QWidget * parent;
char newFlag;
QLabel * label;
private slots:
void displayImage(int, QImage);
void on_capture_clicked();
void on_pushButton_clicked();
void showPhoto();
private:
Ui::MainWindow *ui;
QCameraImageCapture * imageCapture;
QCameraViewfinder * viewfinder;
QCamera * myCamera;
};
#endif // MAINWINDOW_H
mainwindow.cpp:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "clicklabel.h"
#include <QFileDialog> //文件對話框
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
newFlag = 1;
this->parent = parent;
myCamera = new QCamera(this); //創(chuàng)建相機(jī)對象
viewfinder = new QCameraViewfinder(this); //創(chuàng)建一個取景器
imageCapture = new QCameraImageCapture(myCamera, this); //創(chuàng)建圖片捕獲對象
myCamera->setViewfinder(viewfinder); //綁定相機(jī)和取景器
ui->ImageView->addWidget(viewfinder);
myCamera->start();
connect(imageCapture, SIGNAL(imageCaptured(int, QImage)), this, SLOT(displayImage(int, QImage)));
connect(ui->PhotoShow, SIGNAL(clicked1(ClickLabel *)), this, SLOT(showPhoto()));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::displayImage(int, QImage image)
{
ui->PhotoShow->setPixmap(QPixmap::fromImage(image)); //應(yīng)用label控件來承載照片
this->image = image;
}
void MainWindow::on_capture_clicked() //拍┞氛按鈕
{
imageCapture->capture(); //開端拍┞氛(文件默認(rèn)保存在圖片)
}
void MainWindow::showPhoto() //開新窗口顯示拍的┞氛片
{
if(1 == newFlag) //此前提包管多次點(diǎn)擊label控件也只會創(chuàng)建一個窗口
{
MainWindow * wShow = new MainWindow(parent);
wShow->setFixedSize(800, 480);
wShow->show(); //設(shè)置一個新窗口顯示拍好的┞氛片
label = new QLabel(wShow);
}
label->setFixedSize(800, 480);
label->show();
label->setPixmap(QPixmap::fromImage(image));
newFlag = 0;
}
void MainWindow::on_pushButton_clicked()
{
//應(yīng)用文件對話框保存圖片
fileName = QFileDialog::getSaveFileName(this, "save file", QDir::homePath(), "*.jpg; *.*");
if(fileName.isEmpty())
{
return;
}
//qDebug() << fileName;
}
main.cpp:
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
總結(jié)
以上就是今天的小法度榜樣了。代碼寫的不是很優(yōu)美。如不雅大年夜家有什么效力更高的辦法,可以指出來。
相關(guān)案例查看更多
相關(guān)閱讀
- 小程序開發(fā)平臺前十名
- 云南微信小程序開發(fā)
- 貴州小程序開發(fā)
- 云南軟件設(shè)計
- 云南網(wǎng)站建設(shè)電話
- 云南軟件公司
- 昆明做網(wǎng)站
- 小程序開發(fā)聯(lián)系方式
- 網(wǎng)站建設(shè)靠譜公司
- Web開發(fā)框架
- 汽車報廢管理系統(tǒng)
- 網(wǎng)站建設(shè)公司地址
- 網(wǎng)站優(yōu)化哪家好
- 網(wǎng)站優(yōu)化公司
- 網(wǎng)站制作
- 云南小程序開發(fā)哪家好
- 小程序開發(fā)課程
- 云南網(wǎng)站建設(shè)高手
- 汽車報廢
- 昆明網(wǎng)站開發(fā)
- 云南網(wǎng)站建設(shè)哪家公司好
- 迪慶小程序開發(fā)
- 云南網(wǎng)站建設(shè)
- 云南電商網(wǎng)站建設(shè)
- 汽車報廢回收
- 百度小程序開發(fā)
- 河南小程序制作
- 網(wǎng)站建設(shè)公司網(wǎng)站
- 北京小程序制作
- 買小程序被騙