腐蚀:高亮部分减少
膨胀:高亮部分增加
边界提取 = 膨胀-腐蚀
#include "opencv2/core/core.hpp" #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" using namespace cv; int main(int argc, char *argv[]) { Mat image, imageGray, imageDilate, imageErode, imageBorder; image = imread("C:\vs_test\Project7\x64\Debug\1.png"); resize(image, image, Size(400, 400)); cvtColor(image, imageGray, CV_RGB2GRAY); // 这里矩形MORPH_RECT=0, 十字形MORPH_CROSS=1, 椭圆MORPH_ELLIPSE=2 //getStructuringElement是获得卷积核(形状,大小,核的中心位置默认位于形状中心) Mat element = getStructuringElement(1, Size(3, 3), Point(-1, -1)); dilate(imageGray, imageDilate, element, Point(-1, -1));//膨胀 erode(imageGray, imageErode, element, Point(-1, -1)); //腐蚀 imageBorder = imageDilate - imageErode; //边界提取 imshow("Source image", image); imshow("Dilate", imageDilate); imshow("Erode", imageErode); imshow("Border", imageBorder); waitKey(); }
运行结果: