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);

}

  

posted on 2021-10-09 11:24  飘杨......  阅读(372)  评论(0编辑  收藏  举报