网上的原理很多,我这直接上代码
#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();
}
如下图: