OpenCV实现图像 开闭运算

开运算概念

OpenCV实现图像 开闭运算_第1张图片
OpenCV实现图像 开闭运算_第2张图片

闭运算概念

OpenCV实现图像 开闭运算_第3张图片

API
cv.morphologyEx(img , op, kernal)

参数:

  • img ;要处理的图像
  • op : 处理方式 : 若进行开运算,则设为cv.MORPH_OPEN ,若进行闭运算,则设为cv.MORPH_CLOSE
  • Kernel :核结构

代码实现10*10的核结构对卷积进行开闭运算的实现

import  numpy as np
import cv2 as cv
import matplotlib.pyplot as plt

from pylab import mpl

mpl.rcParams['font.sans-serif'] = ['SimHei']
#读取图像
img1 = cv.imread("aa.jpg")
img2 = cv.imread("lena.png")

#创建核结构
kernel = np.ones((10,10),np.uint8)

#图像的开闭运算

cvopen = cv.morphologyEx(img1,cv.MORPH_OPEN,kernel)  #开运算(先腐蚀,再膨胀,去除噪点)

cvclose = cv.morphologyEx(img2,cv.MORPH_CLOSE,kernel)  #闭运算(先膨胀,再腐蚀,去除孔洞)

#图像展示
fig,axes = plt.subplots(nrows=2,ncols=2,figsize=(6,6),dpi=100)

axes[0,0].imshow(img1[:,:,::-1])
axes[0,0].set_title("原图-aa")

axes[0,1].imshow(cvopen[:,:,::-1])
axes[0,1].set_title("开运算-aa")

axes[1,0].imshow(img2[:,:,::-1])
axes[1,0].set_title("原图-lena")

axes[1,1].imshow(cvclose[:,:,::-1])
axes[1,1].set_title("闭运算-lena")

plt.show()

结果展示

OpenCV实现图像 开闭运算_第4张图片

你可能感兴趣的:(OpenCV从入门到精通,opencv,人工智能,计算机视觉,python)