创建图片
创建出来的结果如下:
形态学操作函数
Imgproc.morphologyEx(src, dst, op, kernel);
- src:输入图像
- dst:输出图像
- op:模式
- kernel:卷积核(和上一篇一样的获取方法)
这里的模式(op)有以下几种:
- MORPH_ERODE = 0:腐蚀
- MORPH_DILATE = 1:膨胀
- MORPH_OPEN = 2:开操作
- MORPH_CLOSE = 3:闭操作
- MORPH_GRADIENT = 4:基本梯度
- MORPH_TOPHAT = 5:顶帽
- MORPH_BLACKHAT = 6:黑帽
膨胀和腐蚀
这个我们好理解,我们对上面创建的图片进行膨胀和腐蚀
效果:
显然可以看到 的是在膨胀之后整个字体都变粗了,但是在腐蚀之后整个字体变的很细
我们来看看元素是怎样变化的:
通过矩阵元素的变化,我们可以看到元素255的数据的多少,来判断线条的粗细
开操作和闭操作
我们在程序中伪造一些噪点,看开操作和闭合操作对噪点的影响
在原图中的噪点,开操作之后噪点看不到了
从数据元素上看,开操作将噪点直接去除了,但是我们看出来闭操作原图有什么影响
看来还是明显的,如果内核设置为7x7
我是datouniao这几个字体根本就没有了
从元素上变化是这样的:
上面的红线有什么样的变化,在闭操作前后,整个图像更加的紧凑了,也就是临近大小的元素更加的紧凑
获取这样还不够明显
我们这样来看
黑色的线条就像是红色方框上的嘴巴,直接闭合了,剩下红色的方框
黑帽和顶帽
除了黑帽和顶帽的操作之外,还有其他的梯度操作和焊接操作
MORPH_ERODE = 0,
MORPH_DILATE = 1,
MORPH_OPEN = 2,
MORPH_CLOSE = 3,
MORPH_GRADIENT = 4,
MORPH_TOPHAT = 5,
MORPH_BLACKHAT = 6,
MORPH_HITMISS = 7;
梯度操作和焊接操作
我们来看其中形态的变化
换一张图:
感觉梯度操作让整个图像更加的线条明显
上面就是我们对图像形态的一种操作,希望对你有所帮助