Qt5显示OpenCV二值化处理结果

新建界面,添加一个滑动条QSlider,值范围为1-255。

代码:

mainWindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

#include "cv2qt.h"

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;

    cv::Mat src;
    cv::Mat srcGray;
    CV2Qt cv2qt;
private slots:
    void on_horizontalSlider_valueChanged(int value);
};
#endif // MAINWINDOW_H

mainWindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    src = cv::imread("D:/pic/lena.jpg");
    ui->label->setPixmap(cv2qt.cvMatToQPixmap(src));
    cv::cvtColor(src, srcGray, cv::COLOR_BGR2GRAY);

    if(srcGray.empty())
        return;
    ui->horizontalSlider->setValue(120);
    cv::Mat tmp;
    cv::threshold(srcGray, tmp, 120., 255., cv::THRESH_BINARY);
    ui->label_2->setPixmap(cv2qt.cvMatToQPixmap(tmp));
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_horizontalSlider_valueChanged(int value)
{
    qDebug() << "value: " << value;
    if(srcGray.empty())
        return;
    cv::Mat tmp;
    cv::threshold(srcGray, tmp, double(value), 255., cv::THRESH_BINARY);
    ui->label_2->setPixmap(cv2qt.cvMatToQPixmap(tmp));
}

运行结果:

多谢,亲爱的美美。

猜你喜欢

转载自blog.csdn.net/islinyoubiao/article/details/113786683