Qt creator5.7 OpenCV249之图片腐化(含源码下载)

首先介绍几个OpenCV的函数


void cv::erode(

InputArray src,

OutputArray dst,

InputArray kernel,

Point anchor=Point(-1,-1),

int iterations=1,

int borderType=BORDER_CONSTANT,

const Scalar& borderValue=morphologyDefaultBorderValue())


src-需要进行腐蚀的原始输入图像,图像的通道数是任意的,但要求图像的深度必须是:

CV_8U、CV_16U、CV_16S、CV_32F、CV_64F其中的一种。


其中Kernel可以通过调用getStructuringElement得到,其定义形式为

Mat cv::getStructuringElement(

int shape,

Size ksize,

Point anchor=Point(-1,-1))

该函数返回一个用于形态学操作的指定大小的形状的结构元素。

shape -cv::MorphShapes中任意一个元素形状

MORPH_REC 矩形

MORPH_CROSS 十字型

MORPH_ELLIPSE 椭圆

Ksize-结构元素的大小

Anchor取默认值把


下面是程序部分代码:

#ifndef WIDGET_H
#define WIDGET_H

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    cv::Mat srcImage,dstImage,tempImage;
    QImage img;
    ~Widget();

public slots:
    void onErodeBtn();

private:
    Ui::Widget *ui;
};

#endif // WIDGET_H

下面是腐化代码:

void Widget::onErodeBtn()
{
    //定义类型
    int erosion_type;
    erosion_type = cv::MORPH_RECT;

    //定义大小
    int erosion_size=3;

    //调用getStructuringElement
    cv::Mat element=cv::getStructuringElement(erosion_type,
                                              cv::Size(2*erosion_size+1,2*erosion_size+1),
                                              cv::Point(erosion_size,erosion_size));

    //调用腐蚀函数
    cv::erode(srcImage,dstImage,element);

    //显示图片
    img = QImage((const unsigned char*)(dstImage.data),dstImage.cols,dstImage.rows,dstImage.cols*dstImage.channels(),  QImage::Format_RGB888);
    img=img.scaled(ui->label_D->size());
    ui->label_D->setPixmap(QPixmap::fromImage(img));
}

下面是程序源码打包

地址:http://download.csdn.net/detail/qq78442761/9734987

下面是运行结果:

Qt creator5.7 OpenCV249之图片腐化(含源码下载)_第1张图片


你可能感兴趣的:(C/C++,OpenCV,Qt,opencv,qt)