Qt+OpenCV小项目:灰度图转换

Posted 流楚丶格念

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt+OpenCV小项目:灰度图转换相关的知识,希望对你有一定的参考价值。


刚装上Qt和OpenCV,配置好后,测试的第一个程序。

项目展示

项目链接

小项目(0积分),有兴趣的可以下载下来玩一玩
https://download.csdn.net/download/weixin_45525272/75098303

项目代码

界面

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QFileDialog>
#include <QDebug>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/core/core.hpp>

using namespace cv;

namespace Ui 
class MainWindow;


class MainWindow : public QMainWindow

    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots:
    void on_pushButton_clicked();

    void on_pushButton_2_clicked();

    void on_pushButton_3_clicked();

private:
    Ui::MainWindow *ui;
    QImage img;
    Mat src;
    bool colorful = true;
    QString img_name;
;

#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <iostream>
#include <QTextCodec>
#include <string>
#include <QString>

using namespace std;

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)

    ui->setupUi(this);


MainWindow::~MainWindow()

    delete ui;


void MainWindow::on_pushButton_clicked()

    img_name = QFileDialog::getOpenFileName( this, tr("Open Image"), ".",tr("Image Files(*.png *.jpg *.jpeg *.bmp)"));
    QTextCodec *code = QTextCodec::codecForName("gb18030");
    string name = code->fromUnicode(img_name).data();
    if(name.length()<1) return;
    qDebug() << "打开图片:" << img_name;

    try
        src=imread(img_name.toUtf8().data());
        namedWindow( "src", WINDOW_NORMAL);
        if(!src.empty())
            imshow("src",src);
        
    catch(Exception e)
        cout << e.err << endl;
    



void MainWindow::on_pushButton_2_clicked()

    exit(0);


//实现灰度图和彩色图之间的相互转换
void MainWindow::on_pushButton_3_clicked()

    try
        if(colorful)
        
            cvtColor(src, src, COLOR_RGB2GRAY);
            imshow("src",src);
            ui->pushButton_3->setText("转为原图");
        
        else
        
            src=imread(img_name.toUtf8().data());//
            imshow("src",src);
            ui->pushButton_3->setText("转为灰度图");
        
        colorful = !colorful;
    catch(Exception e)
        cout << e.err << endl;
    


以上是关于Qt+OpenCV小项目:灰度图转换的主要内容,如果未能解决你的问题,请参考以下文章

使用 Opencv 和 Qt 对两个灰度图像进行减法的使用条款

opencv中加载掩膜为啥是灰度图

opencv 提取单通道 ,转化灰度图像。

Qt-OpenCV:如何在 Qt 中显示灰度图像(opencv)

OpenCV-基于自定义色条实现灰度图上色

OpenCV-基于自定义色条实现灰度图上色