代码如下:
#include <QCoreApplication>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
int main()
{
Mat src = imread("lena.jpg", 0);
Mat dst, close, open;
Mat element(5, 5, CV_8U, Scalar(1));
threshold(src, dst, 100, 255, THRESH_BINARY_INV);
namedWindow("dst", 0);
imshow("dst", dst);
morphologyEx(dst, close, MORPH_CLOSE, element);//闭运算
namedWindow("close", 0);
imshow("close", close);
morphologyEx(dst, open, MORPH_OPEN, element);//开运算
namedWindow("open", 0);
imshow("open", open);
waitKey(0);
}
函数介绍:
1、morphologyEx 函数其实用法跟腐蚀与膨胀的用法差不多,闭运算的定义是对图像线膨胀再腐蚀,开运算则相反。
闭运算:用来填充物体内细小空洞、连接邻近物体、平滑其边界的同时并不明显改变其面积。
开运算:用来消除小物体、在纤细点处分离物体、平滑较大物体的边界的同时并不明显改变其面积。