本系列代码托管于:https://github.com/chintsan-code/opencv4-tutorials

本篇使用的项目为:erode_dilate

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, const char** argv) {
	Mat src = imread("../sample/morph.png");
	if (src.empty()) {
		cout << "could not load image..." << endl;
		return -1;
	}
	Mat gray, binary;
	cvtColor(src, gray, COLOR_BGR2GRAY);
	threshold(gray, binary, 0, 255, THRESH_BINARY | THRESH_OTSU);
	imshow("binary", binary);

	Mat dst1, dst2;
	Mat kernel = getStructuringElement(MORPH_RECT, Size(11, 11), Point(-1, -1));
	erode(src, dst1, kernel);
	dilate(src, dst2, kernel);

	imshow("erode", dst1);
	imshow("dilate", dst2);

	waitKey(0);
	destroyAllWindows();
	return 0;
}

erode:腐蚀

opencv4入门笔记(35):图像形态学操作——膨胀腐蚀-萤火

相当于最小值滤波:中心像素替换为最小值

void 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 or CV_64F中的一种
  • dst:输出图像,与src具有相同的尺寸和类型
  • kernel:结构元素,可以通过getStructuringElement函数生成
  • anchor:锚点。默认(-1,-1),为结构元素中心
  • iterations:做多少次腐蚀操作
  • borderType:图像边缘处理方式
  • borderValue:当borderType为BORDER_CONSTANT时,边缘填充值

dilate:膨胀

opencv4入门笔记(35):图像形态学操作——膨胀腐蚀-萤火

相当于最大值滤波:中心像素替换为最大值

void dilate( 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 or CV_64F中的一种
  • dst:输出图像,与src具有相同的尺寸和类型
  • kernel:结构元素,可以通过getStructuringElement函数生成
  • anchor:锚点。默认(-1,-1),为结构元素中心
  • iterations:做多少次膨胀操作
  • borderType:图像边缘处理方式
  • borderValue:当borderType为BORDER_CONSTANT时,边缘填充值

getStructuringElement:生成用于形态学操作的特定尺寸和形状的结构元素

Mat getStructuringElement(int shape, Size ksize, Point anchor = Point(-1,-1));
  • shape:结构元素形状
    • MORPH_RECT:矩形
    • MORPH_CROSS:十字交叉
    • MORPH_ELLIPSE:圆形
  • ksize:结构元素尺寸
  • anchor:结构元素锚点。默认(-1,-1),为中心