讲解C++中的morphologyEx函数
时间: 2024-05-02 14:18:50 浏览: 131
morphologyEx函数是OpenCV中的形态学操作函数之一,可以对二值图像进行膨胀、腐蚀、开运算、闭运算、梯度运算和顶帽运算等形态学操作。
函数原型:
```c++
void 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:输入的二值图像,必须为8位单通道图像。
- dst:输出的二值图像,和输入图像大小相同。
- op:形态学操作类型,可以是如下几种之一:
- MORPH_ERODE:腐蚀操作;
- MORPH_DILATE:膨胀操作;
- MORPH_OPEN:开运算;
- MORPH_CLOSE:闭运算;
- MORPH_GRADIENT:梯度运算;
- MORPH_TOPHAT:顶帽运算;
- MORPH_BLACKHAT:黑帽运算。
- kernel:形态学操作的核,用于指定形态学操作的形状和大小。
- anchor:锚点,用于指定形态学操作的中心点,默认为核的中心点。
- iterations:形态学操作的迭代次数,默认为1。
- borderType:边界填充方式,可以是BORDER_CONSTANT、BORDER_REPLICATE、BORDER_REFLECT、BORDER_WRAP、BORDER_REFLECT_101、BORDER_TRANSPARENT等。
- borderValue:边界填充的值,默认为morphologyDefaultBorderValue()。
示例代码:
```c++
Mat src = imread("lena.jpg", IMREAD_GRAYSCALE);
Mat dst;
Mat kernel = getStructuringElement(MORPH_RECT, Size(3,3), Point(-1,-1));
morphologyEx(src, dst, MORPH_OPEN, kernel);
```
以上代码实现了对lena图像进行开运算操作,得到的结果保存在dst中。其中使用了getStructuringElement函数生成了3x3的矩形形态学核,通过morphologyEx函数进行开运算操作。
阅读全文