网上的原理很多,我这直接上代码

#include "widget.h"
#include "ui_widget.h"

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


Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    ui->erodehorizontalSlider->setMaximum(100);
    ui->erodehorizontalSlider->setMinimum(0);
    ui->erodehorizontalSlider->setTickInterval(1);

    ui->dilatehorizontalSlider->setMaximum(100);
    ui->dilatehorizontalSlider->setMinimum(0);
    ui->dilatehorizontalSlider->setTickInterval(1);

}

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

void Widget::on_pushButton_clicked()
{
    QString filename = QFileDialog::getOpenFileName(this,tr("open picture"),tr("Image File(*.bmp *.jpg *.jpeg *.png)"));
   // std::cout << filename.toStdString().data() << std::endl;
   mCVimage = cv::imread(filename.toStdString());
   // cv::imshow("asd",image);
   cv::cvtColor( mCVimage, mCVimage, cv::COLOR_BGR2RGB);
   QImage qimg = QImage(mCVimage.data,mCVimage.cols,mCVimage.rows,QImage::Format_RGB888);
   ui->label->setPixmap( QPixmap::fromImage(qimg));
   ui->label->resize( ui->label->pixmap()->size());
   ui->label->show();
}

void Widget::on_dilatehorizontalSlider_sliderMoved(int position)
{
    cv::Mat element = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(position+1, position+1));
    cv::Mat dilateImage;
    cv::dilate(mCVimage, dilateImage, element);

    QImage qimg = QImage(dilateImage.data,dilateImage.cols,dilateImage.rows,QImage::Format_RGB888);
    ui->label->setPixmap( QPixmap::fromImage(qimg));
    ui->label->resize( ui->label->pixmap()->size());
    ui->label->show();
}

void Widget::on_erodehorizontalSlider_sliderMoved(int position)
{
    cv::Mat element = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(position+1, position+1));
    cv::Mat erodeImage;
    cv::erode(mCVimage, erodeImage, element);

    QImage qimg = QImage(erodeImage.data,erodeImage.cols,erodeImage.rows,QImage::Format_RGB888);
    ui->label->setPixmap( QPixmap::fromImage(qimg));
    ui->label->resize( ui->label->pixmap()->size());
    ui->label->show();
}

如下图:

在这里插入图片描述
在这里插入图片描述

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐