OpenCV实现膨胀和腐蚀
一、概述
案例:使用膨胀dilate和腐蚀erode操作来操作图形
用途:图像的形态学操作主要用在图像的预处理阶段。例如:对身份证进行切割时。在对身份证进行灰度-->模糊---->黑白分割后可对图像进行膨胀操作让文本进行黏连,然后再利用图像分割技术就身份证文字的块状区域进行分割。
二、图片示例
原图
膨胀
腐蚀
三、代码示例
//图像形态学操作-->基于形状的一系列的图像处理操作的集合 //常见的形态学操作有:膨胀、腐蚀、开操作、闭操作,其中膨胀和腐蚀是最常用的。 //作用:膨胀:亮的区域变大,腐蚀:暗的区域变大 #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace std; Mat src, dst; char OUTPUT_WIN[] = "output image"; int elementSize = 3; int max_size = 21; void callback_(int ,void*); int main(int argc, char const *argv[]) { //加载图片 src = imread("girl.jpg"); if(!src.data){ cout<< "can't load image"<<endl; return -1; } imshow("src",src); createTrackbar("Element Size",OUTPUT_WIN,&elementSize,max_size,callback_); callback_(0,0); waitKey(0); return 0; } void callback_(int ,void*){ int s = elementSize*2+1; Mat structureElement = getStructuringElement(MORPH_RECT,Size(s,s),Point(-1,-1)); //膨胀 dilate(src,dst,structureElement); //腐蚀 // erode(src,dst,structureElement); imshow("dst",dst); }