目录
- 依赖库
- 显示图像的函数
- 读取图像
- 转换为灰度图像
- 应用二值化阈值处理
- 创建结构元素
- 应用形态学闭运算
- 显示结果
依赖库
首先,我们需要导入必要的库:
import cv2
import numpy as np
cv2
是OpenCV的Python接口,用于图像处理。numpy
是一个用于科学计算的库,我们用它来创建结构元素。
显示图像的函数
我们定义了一个函数 show_img
来显示图像:
def show_img(name, img):cv2.imshow(name, img) # 使用OpenCV的imshow函数显示图像cv2.waitKey(0) # 等待任意键被按下cv2.destroyAllWindows() # 关闭所有OpenCV创建的窗口
读取图像
使用 cv2.imread
函数读取图像文件:
img = cv2.imread('name.jpg')
转换为灰度图像
将彩色图像转换为灰度图像:
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
应用二值化阈值处理
应用二值化阈值处理,将灰度图像转换为二值图像:
ret, ref = cv2.threshold(img_gray, 127, 255, cv2.THRESH_BINARY_INV)
127
是阈值。255
是最大值。cv2.THRESH_BINARY_INV
表示反转二值化。
创建结构元素
创建一个3x3的结构元素用于形态学操作:
kernel = np.ones((3, 3), np.uint8)
应用形态学闭运算
应用形态学闭运算(先膨胀再腐蚀):
closing = cv2.morphologyEx(ref, cv2.MORPH_CLOSE, kernel)
显示结果
最后,我们使用之前定义的 show_img
函数来显示经过闭运算处理后的图像:
发现图片没有变化,其实是先把细的笔画填充了,在去掉填充的部分,所以没有变化
show_img('closing', closing)