opencv的形态学操作

opencv的形态学操作

函数morphologyEx

  • 第一个参数(src): 输入的图像
  • 第二个参数(dst): 输出的图像
  • 第三个参数(op): 要进行的操作
    • 开操作 (MORPH_OPEN): 先腐蚀,后膨胀
    • 闭操作(MORPH_CLOSE ): 先膨胀,后腐蚀
    • 顶帽(MORPH_GRADIENT): 原图像与开操作之后的图像的差值
    • 黑帽(MORPH_BLACKHAT): 闭操作之后的图像与原图像的差值
  • 第四个参数(kernel):进行形态学操作的内核,一般设为奇数,默认3
  • 第五个参数(anchor): 被称之为锚点,一般默认为Point(-1, -1)
    锚点更多参考:https://blog.csdn.net/liquan1434/article/details/22314171
  • 第六个参数(iterations): 是函数要执行的次数,一般为1;
  • 第七个参数(border type):决定在图像发生几何变换或者滤波操作(卷积)时边沿像素的处理方式,默认值为BORDER_ CONSTANT。
    • BORDER_CONSTANT: 就是边沿像素用i替换
    • BORDER_REPLICATE:复制边界像素
    • BORDER_REFLECT:反射复制边界像素
    • BORDER_REFLECT_101:以边界为对称轴反射复制像素
  • 第八个参数(borderValue): 当边界为常数时的边界值,可以设置边框的颜色,有默认值为morphologyDefaultBorderValue() ,也可以设置其他的

demo

开操作在这里插入图片描述
#include "pch.h"
#include <iostream>
#include <opencv2/opencv.hpp>
int main()
{
	Mat src = imread("f:/test.png");
	imshow("input", src);
	Mat kernel = getStructuringElement(MORPH_RECT, Size(3, 3));
	Mat dst;
	morphologyEx(src, dst, CV_MOP_OPEN, kernel);
	imshow("output", dst);
	waitKey(0);
	return 0;
}

输出图像
在这里插入图片描述

闭操作
#include "pch.h"
#include <iostream>
#include <opencv2/opencv.hpp>
int main()
{
	Mat src = imread("f:/test.png");
	imshow("input", src);
	Mat kernel = getStructuringElement(MORPH_RECT, Size(3, 3));
	Mat dst;
	morphologyEx(src, dst, CV_MOP_CLOSE, kernel);
	imshow("output", dst);
	waitKey(0);
	return 0;
}

在这里插入图片描述

顶帽
#include "pch.h"
#include <iostream>
#include <opencv2/opencv.hpp>
int main()
{
	Mat src = imread("f:/test.png");
	imshow("input", src);
	Mat kernel = getStructuringElement(MORPH_RECT, Size(3, 3));
	Mat dst;
	morphologyEx(src, dst, CV_MOP_TOPHAT, kernel);
	imshow("output", dst);
	waitKey(0);
	return 0;
}

在这里插入图片描述

黑帽
#include "pch.h"
#include <iostream>
#include <opencv2/opencv.hpp>
int main()
{
	Mat src = imread("f:/test.png");
	imshow("input", src);
	Mat kernel = getStructuringElement(MORPH_RECT, Size(3, 3));
	Mat dst;
	morphologyEx(src, dst, CV_MOP_BLACKHAT, kernel);
	imshow("output", dst);
	waitKey(0);
	return 0;
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值