开启和闭合图像 - sumpig/OpenCV GitHub Wiki
闭合的定义是对图像先膨胀后腐蚀,开启的定义是对图像先腐蚀后膨胀。
可以用以下方法对图像做闭合运算:
// 膨胀原图像
cv::dilate(image, result, cv::Mat());
// 就地腐蚀膨胀后的图像
cv::erode(result, result, cv::Mat());
调换这两个函数的调用次序,就能得到开启滤波器。
这些滤波器常用于目标检测。闭合滤波器可把错误分裂成小碎片的物体连接起来,而开启滤波器可以移除因图像噪声产生的斑点。
OpenCV 提供了 morphologyEx 函数,可以实现教高级别的形态学滤波器。
// 闭合图像
cv::Mat element5(5,5,CV_8U,cv::Scalar(1));
cv::Mat closed;
cv::morphologyEx(image,closed, // 输入和输出的图像
cv::MORPH_CLOSE, // 运算符
element5); // 结构元素
// 开启图像
cv::Mat opened;
cv::morphologyEx(image, opened,
cv::MORPH_OPEN,
element5);