1、开操作,先腐蚀后膨胀,可以去除小的点
#include <iostream>
#include <opencv2/opencv.hpp>
#include<opencv2/highgui/highgui.hpp>
#include "Graph.h"
using namespace std;
using namespace cv;
int main()
{
Mat srcImg(400, 400, CV_8UC3, Scalar(0, 0, 0));
Mat dstImg;
Point2i p1(0, 0);
Point2i p2(10, 10);
rectangle(srcImg, p1, p2, Scalar(255, 255, 255), 5, 8);
Mat kernel = getStructuringElement(MORPH_RECT, Size(10, 10), Point(-1, -1));
/*erode(srcImg, dstImg, kernel, Point(-1, -1));
dilate(dstImg, dstImg, kernel, Point(-1, -1));*/
morphologyEx(srcImg, dstImg, MORPH_OPEN, kernel, Point(-1, -1));
imshow("srcImg", srcImg);
waitKey(0);
return 0;
}
2、闭操作,先膨胀后腐蚀,可以填充小的洞
#include <iostream>
#include <opencv2/opencv.hpp>
#include<opencv2/highgui/highgui.hpp>
#include "Graph.h"
using namespace std;
using namespace cv;
int main()
{
Mat srcImg(400, 400, CV_8UC3, Scalar(0, 0, 0));
Mat dstImg;
Point2i p1(0, 0);
Point2i p2(10, 10);
rectangle(srcImg, p1, p2, Scalar(255, 255, 255), 5, 8);
Mat kernel = getStructuringElement(MORPH_RECT, Size(10, 10), Point(-1, -1));
/*erode(srcImg, dstImg, kernel, Point(-1, -1));
dilate(dstImg, dstImg, kernel, Point(-1, -1));*/
morphologyEx(srcImg, dstImg, MORPH_CLOSE, kernel, Point(-1, -1));
imshow("srcImg", srcImg);
waitKey(0);
return 0;
}