腐蚀和膨胀图像 - sumpig/OpenCV GitHub Wiki
腐蚀就是把当前像素替换成所定义像素集合中的最小像素值;膨胀是把当前像素替换成所定义像素集合中的最大像素值。
OpenCV 用简单的函数实现了腐蚀和膨胀运算,它们分别是 cv:erode 和 cv:dilate,用法 也很简单:
cv::Mat image= cv::imread("binary.bmp");
cv::Mat eroded;
cv::Mat dilated;
// 腐蚀图像
// 采用默认的 3×3 结构元素
cv::erode(image, eroded, cv::Mat());
// 膨胀图像
cv::dilate(image,dilated,cv::Mat());
在腐蚀图像中,有些面积较小的物体(可看作背景中的 “噪声” 像素)会彻底消失。
膨胀后的物体会变大,而物体中一些 “空隙” 会被填满。
下面的例子使用 7×7 的结构元素:
cv::Mat element(7, 7, CV_8U, cv::Scalar(1));
cv::erode(image, eroded, element);
这两个函数都有一个用于指定重复次数的可选参数:
// 腐蚀图像三次
cv::erode(image, eroded, cv::Mat(), cv::Point(-1, -1), 3);
输入图像和输出图像可以采用同一个变量,OpenCV 会创建必需的临时图像,如下所示:
cv::erode(image, image, cv::Mat());