opencv erode()怎么用
时间: 2024-05-04 12:19:27 浏览: 56
OpenCV中的erode函数可以用来进行图像的腐蚀操作,其函数原型如下:
```c++
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`:输入图像,可以是单通道或多通道的8位、16位或32位浮点型图像。
- `dst`:输出图像,必须和输入图像大小和类型一致。
- `kernel`:卷积核,可以使用 `getStructuringElement()` 函数生成。
- `anchor`:锚点,表示卷积核中心的位置,默认为(-1,-1),表示卷积核中心为卷积核的中心。
- `iterations`:迭代次数,表示腐蚀操作的次数,默认为1。
- `borderType`:边缘处理方式,表示处理图像边缘时的处理方式,默认为BORDER_CONSTANT,表示用常数填充边缘。
- `borderValue`:边缘处理的默认值,当 `borderType` 为BORDER_CONSTANT时使用,默认为morphologyDefaultBorderValue()。
下面是一个简单的例子,展示如何使用 `erode()` 函数对图像进行腐蚀操作:
```c++
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
// 读入图像
Mat src = imread("lena.jpg", IMREAD_GRAYSCALE);
imshow("src", src);
// 构造结构元素
Mat kernel = getStructuringElement(MORPH_RECT, Size(3, 3));
// 腐蚀操作
Mat dst;
erode(src, dst, kernel, Point(-1, -1), 1);
// 显示结果
imshow("dst", dst);
waitKey(0);
return 0;
}
```
在这个例子中,我们首先读入一张灰度图像,并构造了一个3x3的矩形结构元素。然后使用 `erode()` 函数对输入图像进行腐蚀操作,并将结果显示出来。
需要注意的是,腐蚀操作会使图像的边缘变细,因此在边缘处理时需要特别注意。