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));
    }
    


  • 相关阅读:
    Mat类具体解释(二)
    Android NDK开发篇(六):Java与原生代码通信(异常处理)
    Redis源代码剖析--对象object
    NioEventLoopGroup源码分析与线程设定
    零拷贝剖析以及用户空间与内核空间切换
    Java 字符集编码
    NIO网络编程
    NIO网络访问模式实践
    Spring Boot使用Html
    内存映射文件MappedByteBuffer和Buffer的Scattering与Gathering
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5324945.html
Copyright © 2011-2022 走看看