zoukankan      html  css  js  c++  java
  • QT+QT creator+OpenCV图像灰度化

    1).pro文件

    #-------------------------------------------------
    #
    # Project created by QtCreator 2014-05-18T12:56:52
    #
    #-------------------------------------------------
    
    QT       += core gui
    
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    
    TARGET = myQTDemo
    TEMPLATE = app
    
    
    SOURCES += main.cpp
            mainwindow.cpp
    
    HEADERS  += mainwindow.h
    
    FORMS    += mainwindow.ui
    INCLUDEPATH+=d:opencv249includeopencv
                        d:opencv249includeopencv2
                        d:opencv249include
    
    LIBS+=d:opencv249liblibopencv_calib3d249.dll.a
            d:opencv249liblibopencv_contrib249.dll.a
            d:opencv249liblibopencv_core249.dll.a
            d:opencv249liblibopencv_features2d249.dll.a
            d:opencv249liblibopencv_flann249.dll.a
            d:opencv249liblibopencv_gpu249.dll.a
            d:opencv249liblibopencv_highgui249.dll.a
            d:opencv249liblibopencv_imgproc249.dll.a
            d:opencv249liblibopencv_legacy249.dll.a
            d:opencv249liblibopencv_ml249.dll.a
            d:opencv249liblibopencv_objdetect249.dll.a
            d:opencv249liblibopencv_video249.dll.a
    

    2).h文件

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <QMainWindow>
    #include <opencv2/core/core.hpp>
    #include <opencv2/highgui/highgui.hpp>
    namespace Ui {
    class MainWindow;
    }
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
    public:
        explicit MainWindow(QWidget *parent = 0);
        ~MainWindow();
        cv::Mat image,image2;
          QImage img;
    
    private slots:
        void on_pushButton_clicked();
    
        void on_pushButton_2_clicked();
    
    private:
        Ui::MainWindow *ui;
    };
    
    #endif // MAINWINDOW_H
    

    3).cpp文件

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    #include <QString>
    #include <QFileDialog>
    #include <QMessageBox>
    #include <opencv/cv.h>
    #include <QTextCodec>
    using namespace cv;
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    
    void MainWindow::on_pushButton_clicked()
    {
        QString filename = QFileDialog::getOpenFileName(this,tr("Open Image"),"",tr("Image File(*.bmp *.jpg *.jpeg *.png)"));
        QTextCodec *code = QTextCodec::codecForName("gb18030");
        std::string name = code->fromUnicode(filename).data();
        image = cv::imread(name);
    
        if(!image.data)
        {
            QMessageBox msgBox;
            msgBox.setText(tr("image data is null"));
            msgBox.exec();
        }
        else
        {
            cv::cvtColor(image,image2,CV_BGR2RGB);
            img = QImage((const unsigned char*)(image2.data),image.cols,image.rows, image.step,  QImage::Format_RGB888);
            ui->label->clear();
            ui->label->setPixmap(QPixmap::fromImage(img));
            //ui->processPushButton->setEnabled(true);
            ui->label->resize(ui->label->pixmap()->size());
        }
    }
    
    void MainWindow::on_pushButton_2_clicked()
    {
        // cv::flip(image,image,1);
        Mat gray;
    
        cvtColor(image,gray,CV_BGR2GRAY);
        // cvtColor(gray,gray,CV_bg)
      //  imshow("li",gray);
    
        // cv::cvtColor(image,image,CV_BGR2RGB);
        //      img = QImage((const unsigned char*)(image.data),image.cols,image.rows,image.cols*image.channels(),  QImage::Format_RGB888);
        img = QImage((const unsigned char*)(gray.data),gray.cols,gray.rows,gray.step,  QImage::Format_Indexed8);
    
        ui->label->setPixmap(QPixmap::fromImage(img));
    }
    


  • 相关阅读:
    java获得文件的最后修改时间
    【Tomcat】解决Tomcat catalina.out 不断成长导致档案过大的问题
    mysql报错Packet for query is too large (12238 > 1024). You can change this value
    【Tomcat】linux下实时查看tomcat运行日志
    linux下面MySQL变量修改及生效
    【Vim命令大全】史上最全的Vim命令
    (总结)Linux的chattr与lsattr命令详解
    MySql将查询结果插入到另外一张表
    dos中定义变量与获取常见的引用变量以及四则运算、备份文件(set用法)
    批处理BAT替换与截取字符串的用法t1=%a:~3%是什么意思
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5324945.html
Copyright © 2011-2022 走看看