在 OpenCV 内,采用函数 cv2.dilate()实现对图像的膨胀操作,该函数的语法结构为:
dst = cv2.dilate( src, kernel[, anchor[, iterations[, borderType[,borderValue]]]])
式中:
- dst 代表膨胀后所输出的目标图像,该图像和原始图像具有同样的类型和大小。
- src 代表需要进行膨胀操作的原始图像。图像的通道数可以是任意的,但是要求图像的深度必须是 CV_8U、CV_16U、CV_16S、CV_32F、CV_64F 中的一种。
- element 代表膨胀操作所采用的结构类型。它可以自定义生成,也可以通过函数
cv2.getStructuringElement()生成。
参数 kernel、anchor、iterations、borderType、borderValue 与函数 cv2.erode()内相应参数的含义一致。
【例 8.4】使用数组演示膨胀的基本原理。
import cv2
import numpy as np
img = np.zeros((5,5),np.uint8)
img[2,1:4] = 1
kernel = np.ones((3,1),np.uint8)
r = cv2.dilate(img,kernel)
print("img=\n",img)
print("kernel=\n",kernel)
print("dilate=\n",r)
【例 8.5】使用函数 cv2.dilate()完成图像膨胀操作。
img = cv2.imread("/Users/zhaofeier/Desktop/源代码及图像/chapter8/dilation.bmp",0)
kernel = np.ones((9,9),dtype=np.uint8)
dilate = cv2.dilate(img,kernel)
cv2.imshow("original",img)
cv2.imshow("dilate",dilate)
cv2.waitKey()
cv2.destroyAllWindows()
【例 8.6】调节函数 cv2.dilate()的参数,观察不同参数控制下的图像膨胀效果。
img = cv2.imread("/Users/zhaofeier/Desktop/源代码及图像/chapter8/dilation.bmp",0)
kernel = np.ones((5,5),dtype=np.uint8)
dilate = cv2.dilate(img,kernel,iterations=9)
cv2.imshow("original",img)
cv2.imshow("dilate",dilate)
cv2.waitKey()
cv2.destroyAllWindows()
1054

被折叠的 条评论
为什么被折叠?



