#include<iostream>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace std;
using namespace cv;
int main(){
Mat image = imread("binary.bmp");
imshow("Image",image);
腐蚀图像 默认3*3
//Mat eroded;
//erode(image,eroded,Mat());
//imshow("Erode Image",eroded);
膨胀图像
//Mat dilated;
//dilate(image, dilated, Mat());
//imshow("Dilate Image",dilated);
以7*7大小的数据结构进行腐蚀
//Mat eroded2;
//Mat element(7, 7, CV_8U, Scalar(1));
//erode(image, eroded2, element);
//imshow("element Image",eroded2);
以7*7大小的数据结构进行腐蚀3次
//Mat eroded3;
//Mat element3(7, 7, CV_8U, Scalar(1));
//erode(image,eroded3,element3,Point(-1,-1),3);
//imshow("eroded3",eroded3);
//对图片进行闭运算
Mat element5(5, 5, CV_8U, Scalar(1));
Mat closed;
morphologyEx(image, closed, MORPH_CLOSE, element5);
imshow("closed", closed);
//对图片进行开运算
Mat opened;
morphologyEx(image,opened,MORPH_OPEN,element5);
imshow("opened",opened);
//相继进行开运算和闭运算
Mat opencvandclose;
morphologyEx(image, opened, MORPH_OPEN, element5);
morphologyEx(opened, opencvandclose, MORPH_CLOSE, element5);
imshow("opencvandclose", opencvandclose);
//相继进行闭运算和开运算
Mat closeandopen;
morphologyEx(image, closed, MORPH_CLOSE, element5);
morphologyEx(closed, closeandopen, MORPH_OPEN, element5);
imshow("closeandopen", closeandopen);
//腐蚀图像 默认3*3
Mat eroded;
erode(image, eroded, element5);
imshow("Erode Image",eroded);
//先腐蚀在膨胀
Mat erodedanddilated;
Mat erodedanddilated2;
erode(image, erodedanddilated, element5);
dilate(erodedanddilated, erodedanddilated2, element5);
imshow("erodedanddilated", erodedanddilated2);
//先膨胀再腐蚀
Mat dilateanderode;
Mat dilateanderode2;
dilate(image, dilateanderode, element5);
erode(dilateanderode, dilateanderode2,element5);
imshow("dilateanderode", dilateanderode2);
//膨胀图像
Mat dilated;
dilate(image, dilated, element5);
imshow("Dilate Image",dilated);
waitKey(0);
}
erode(InputArray src, OutputArray dst, InputArray kernel, Point anchor=Point(-1,-1),int iterations=1, int borderType=BORDER_CONSTANT,
const Scalar& borderValue=morphologyDefaultBorderValue() )
iterations:腐蚀次数
我们的形态学滤波都作用在二值图像或者灰度图像上
闭运算:对图像进行先膨胀,再腐蚀
开运算:对图像先腐蚀,再膨胀