入门Python:图象处理进阶 - 形态学操作详解:开运算、闭运算与梯度算子实践 (dst = cv2.morphologyEx(src, cv2.MORPH_OPEN, kernel))
最编程
2024-02-18 10:02:17
...
- src表示原始图像
- cv2.MORPH_OPEN表示图像进行开运算处理
- kernel表示卷积核,可以用numpy.ones()函数构建
图像开运算的代码如下所示:
# -*- coding: utf-8 -*-
# By:Eastmount
import cv2
import numpy as np
#读取图片
src = cv2.imread('test01.png', cv2.IMREAD_UNCHANGED)
#设置卷积核
kernel = np.ones((5,5), np.uint8)
#图像开运算
result = cv2.morphologyEx(src, cv2.MORPH_OPEN, kernel)
#显示图像
cv2.imshow("src", src)
cv2.imshow("result", result)
#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()
输出结果如图2所示,左边为原始图像,右边为处理后的图像,可以看到原始图形中的噪声点被去除了部分。
但处理后的图像中仍然有部分噪声,如果想更彻底地去除,可以将卷积设置为10×10的模板,代码如下所示:
# -*- coding: utf-8 -*-
# By:Eastmount
import cv2
import numpy as np
#读取图片
src = cv2.imread('test01.png', cv2.IMREAD_UNCHANGED)
#设置卷积核
kernel = np.ones((10,10), np.uint8)
#图像开运算
result = cv2.morphologyEx(src, cv2.MORPH_OPEN, kernel)
#显示图像
cv2.imshow("src", src)
cv2.imshow("result", result)
#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()
运行结果如图3所示:
二.图像闭运算
图像闭运算是图像依次经过膨胀、腐蚀处理的过程,先膨胀后腐蚀有助于过滤前景物体内部的小孔或物体上的小黑点。其原理如图4所示:
设A是原始图像,B是结构元素图像,则集合A被结构元素B做开运算,记为A·B,其定义为:
换句话说,A被B闭运算就是A被B膨胀后的结果再被B腐蚀。图像开运算在OpenCV中主要使用函数morphologyEx(),其函数原型如下:
下一篇: 专为加工细长轴螺纹零件打造的独特夹具设计