欧美三级国产三级日韩三级_亚洲熟妇丰满大屁股熟妇_欧美亚洲成人一区二区三区_国产精品久久久久久模特

Qt調(diào)用電腦攝像頭寫一個相機(jī)小程序 - 新聞資訊 - 云南小程序開發(fā)|云南軟件開發(fā)|云南網(wǎng)站建設(shè)-昆明葵宇信息科技有限公司

159-8711-8523

云南網(wǎng)建設(shè)/小程序開發(fā)/軟件開發(fā)

知識

不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價值,我們在追求其視覺表現(xiàn)的同時,更側(cè)重于功能的便捷,營銷的便利,運(yùn)營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏壧峁┍憬莸闹С郑?

您當(dāng)前位置>首頁 » 新聞資訊 » 技術(shù)分享 >

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ī)瑯綾擎的重要功能介紹

在這里插入圖片描述

  1. 這張是一開端運(yùn)行的界面,有一個窗口顯示攝像頭捕獲的畫面,還有兩個按鈕控件,撲晡攙下角還有一個label控件(下張圖片可見具體地位)。
  2. 當(dāng)我們開端點(diǎn)荒┝寺氛按鈕,此時就會應(yīng)用label控件來顯示一個小的┞氛片。具體如下:
    在這里插入圖片描述
  3. 左下角顯示的┞氛片就是應(yīng)用label控件來承載的,這時我們再應(yīng)用鼠標(biāo)點(diǎn)擊label控件(即左下角的小圖片), 這是會創(chuàng)建一個新的窗口, 顯示我們方才拍的┞氛片。具體如下:
  4. 第3步的時刻我們點(diǎn)擊保存按鈕的話就會彈出一個保存文件的窗口,具體如下:
    在這里插入圖片描述
  5. 就是以上的幾點(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)案例查看更多