Qt-OpenCV学习笔记--高级形态转换--morphologyEx()

概述

OpenCV提供了一个综合的形态转换工具 morphologyEx() ,集成了腐蚀运算、膨胀运算、开运算、闭运算、梯度运算、顶帽运算、黑帽运算。

函数

void cv::morphologyEx
(
	InputArray 	    src,
    OutputArray 	dst,
    int 	        op,
    InputArray    	kernel,
    Point 	        anchor = Point(-1,-1),
    int 	        iterations = 1,
    int 	        borderType = BORDER_CONSTANT,
    const Scalar & 	borderValue = morphologyDefaultBorderValue() 
)		
src 源图像
dst 输出图像
op

形态运算的类型

 ● MORPH_ERODE        腐蚀

 ● MORPH_DILATE        膨胀

 ● MORPH_OPEN          开运算

 ● MORPH_CLOSE        闭运算

 ● MORPH_GRADIENT        梯度运算

 ● MORPH_TOPHAT            顶帽运算

 ● MORPH_BLACKHAT        黑帽匀速

 ● MORPH_HITMISS            命中/未命中

kernel 结构元素(可以使用 getStructuringElement 创建)
anchor 结构元素的锚点位置(默认值(-1,-1)表示锚位于元素中心)
iterations 形态运算的迭代次数
borderType 图像边框扩展模式(可查阅BorderTypes,但不支持BORDER_WRAP)
borderValue 恒定边界的边界值

测试代码

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

#include 
#include 
#include 

using namespace cv;

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

    //载入图像
    Mat src = imread("c:/opencv/star.jpg");
    //显示
    imshow("src",src);

    //自定义核
    Mat element = getStructuringElement(MORPH_ELLIPSE,Size(5,5));

    //腐蚀运算
    Mat dst_erode;
    morphologyEx(src,dst_erode,MORPH_ERODE,element);
    imshow("dst_erode",dst_erode);

    //膨胀运算
    Mat dst_dilate;
    morphologyEx(src,dst_dilate,MORPH_DILATE,element);
    imshow("dst_dilate",dst_dilate);

    //开运算
    Mat dst_open;
    morphologyEx(src,dst_open,MORPH_OPEN,element);
    imshow("dst_open",dst_open);

    //闭运算
    Mat dst_close;
    morphologyEx(src,dst_close,MORPH_CLOSE,element);
    imshow("dst_close",dst_close);

    //梯度运算
    Mat dst_gradient;
    morphologyEx(src,dst_gradient,MORPH_GRADIENT,element);
    imshow("dst_gradient",dst_gradient);

    //顶帽运算
    Mat dst_top;
    morphologyEx(src,dst_top,MORPH_TOPHAT,element);
    imshow("dst_top",dst_top);

    //黑帽运算
    Mat dst_black;
    morphologyEx(src,dst_black,MORPH_BLACKHAT,element);
    imshow("dst_black",dst_black);



}

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

测试结果

Qt-OpenCV学习笔记--高级形态转换--morphologyEx()_第1张图片

参考

opencv中morphologyEx()函数

形态学应用——图像开运算与闭运算

你可能感兴趣的:(Qt-OpenCV学习笔记,opencv,学习,计算机视觉,qt)