kernel = np.ones((3,3),np.uint8)
dst = cv2.erode(src, kernel, iterations)
其中,参数:
・dst – 处理结果;
・src – 输入图像;
・kernel – 卷积核;
→ 一般为正方形: 类如 5行5列的数组
→生成方式: kernel = np.ones((3,3),np.uint8)
・np.ones 表示生成元素都为1 的数组
・np.uint8表示数据类型为 整形
・iterations– 迭代次数
→表示进行多少次的腐蚀
→默认情况下是1. 可以根据需要修改次数
import cv2
import numpy as np
o=cv2.imread("image\\erode.bmp",cv2.IMREAD_UNCHANGED)
k=np.ones((5,5),np.uint8)
r=cv2.erode(o,k,iterations=10) #迭代次数为10次
cv2.imshow("original",o)
cv2.imshow("result",r)
cv2.waitKey()
cv2.destroyAllWindows()
运行结果
・修改核(5,5)
以及iterations=10
大小可改变效果
输入对象:
→原始图像 : 二值图像
→卷积核 : 二值图像
原理: 与腐蚀操作类似
①卷积核中心点逐个像素扫描原始图像(遍历)
②被扫描到的原始图像的所有像素点,当卷积核对应的区域只要有一个为1时,核中心值就置换为1,否则为0
kernel = np.ones((3,3),np.uint8)
dst = cv2.dilate(src, kernel, iterations)
其中,参数:
・dst – 处理结果;
・src – 输入图像;
・kernel – 卷积核;
→ 一般为正方形: 类如 5行5列的数组
→生成方式: kernel = np.ones((3,3),np.uint8)
・np.ones 表示生成元素都为1 的数组
・np.uint8表示数据类型为 整形
・iterations– 迭代次数
→表示进行多少次的腐蚀
→默认情况下是1. 可以根据需要修改次数
import cv2
import numpy as np
o=cv2.imread("image\\dilation.bmp",cv2.IMREAD_UNCHANGED)
k=np.ones((5,5),np.uint8)
r=cv2.dilate(o,k,iterations=10)
cv2.imshow("original",o)
cv2.imshow("result",r)
cv2.waitKey()
cv2.destroyAllWindows()
运行结果
・修改核(5,5)
以及iterations=10
大小可改变效果
kernel = np.ones((3,3),np.uint8)
opening = cv2.morphologyEx(src,cv2.MORPH_OPEN,kernel)
其中,参数:
・opening – 开运算处理结果;
・src – 输入图像;
・cv2.MORPH_OPEN – 开运算;
・kernel – 卷积核;与腐蚀和膨胀的卷积核一样
→ 一般为正方形: 类如 5行5列的数组
→生成方式: kernel = np.ones((3,3),np.uint8)
import cv2
import numpy as np
o=cv2.imread("image\\opening.bmp",cv2.IMREAD_UNCHANGED)
k=np.ones((5,5),np.uint8)
r=cv2.morphologyEx(o,cv2.MORPH_OPEN,k)
cv2.imshow("original",o)
cv2.imshow("result",r)
cv2.waitKey()
cv2.destroyAllWindows()
运行结果
・kernel (5,5) 还会残留一些毛刺
・kernel (10,10)
import cv2
import numpy as np
o=cv2.imread("image\\closing.bmp",cv2.IMREAD_UNCHANGED)
k=np.ones((5,5),np.uint8)
r=cv2.morphologyEx(o,cv2.MORPH_CLOSE,k)
cv2.imshow("original",o)
cv2.imshow("result",r)
cv2.waitKey()
cv2.destroyAllWindows()
kernel = np.ones((3,3),np.uint8)
gradient = cv2.morphologyEx(src,cv2.MORPH_GRADIENT,kernel)
其中,参数:
・gradient – 梯度运算处理结果;
・src – 输入图像;
・cv2.MORPH_GRADIENT – 梯度运算;
・kernel – 卷积核;
import cv2
import numpy as np
o=cv2.imread("image\\gradient.bmp",cv2.IMREAD_UNCHANGED)
k=np.ones((5,5),np.uint8)
r=cv2.morphologyEx(o,cv2.MORPH_GRADIENT,k)
cv2.imshow("original",o)
cv2.imshow("result",r)
cv2.waitKey()
cv2.destroyAllWindows()
kernel = np.ones((3,3),np.uint8)
tophat = cv2.morphologyEx(src,cv2.MORPH_TOPHAT,kernel)
其中,参数:
・tophat – 礼帽运算处理结果;
・src – 输入图像;
・cv2.MORPH_TOPHAT – 礼帽运算;
・kernel – 卷积核;
import cv2
import numpy as np
o=cv2.imread("image\\tophat.bmp",cv2.IMREAD_UNCHANGED)
k=np.ones((5,5),np.uint8)
r=cv2.morphologyEx(o,cv2.MORPH_TOPHAT,k)
cv2.imshow("original",o)
cv2.imshow("result",r)
cv2.waitKey()
cv2.destroyAllWindows()
import cv2
import numpy as np
o=cv2.imread("image\\blackhat.bmp",cv2.IMREAD_UNCHANGED)
k=np.ones((10,10),np.uint8)
r=cv2.morphologyEx(o,cv2.MORPH_BLACKHAT,k)
cv2.imshow("original",o)
cv2.imshow("result",r)
cv2.waitKey()
cv2.destroyAllWindows()