展开
拓展 关闭
订阅号推广码
GitHub
视频
公告栏 关闭

腐蚀与膨胀

  • 腐蚀
import cv2 #opencv的缩写为cv2
import matplotlib.pyplot as plt # matplotlib库用于绘图展示
import numpy as np   # numpy数值计算工具包

# 魔法指令,直接展示图,Jupyter notebook特有
%matplotlib inline   

# 腐蚀操作通常是拿二值图像做腐蚀操作

img = cv2.imread('01_Picture/05_Dige.png')
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

# 只要框里有黑色,中心点的值就变为黑色,即原来的白色被黑色腐蚀掉

kernel = np.ones((5,5),np.uint8)
erosion = cv2.erode(img,kernel,iterations=1)

cv2.imshow('erosion',erosion)
cv2.waitKey(0)
cv2.destroyAllWindows()
  • 执行结果

  • 腐蚀2
pie = cv2.imread('01_Picture/06_pie.png')
cv2.imshow('pie',pie)
cv2.waitKey(0)
cv2.destroyAllWindows()

kernel = np.ones((30,30),np.uint8)
erosion_1 = cv2.erode(pie,kernel,iterations=1)
erosion_2 = cv2.erode(pie,kernel,iterations=2)
erosion_3 = cv2.erode(pie,kernel,iterations=3)
res = np.hstack((erosion_1,erosion_2,erosion_3))
cv2.imshow('res',res)
cv2.waitKey(0)
cv2.destroyAllWindows()
  • 执行结果
点击查看详情

  • 膨胀案例1
img = cv2.imread('01_Picture/05_Dige.png')
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

# 先腐蚀 后膨胀,抵消腐蚀造成的损害
kernel = np.ones((3,3),np.uint8)
dige_erosion = cv2.erode(img,kernel,iterations=1)     
cv2.imshow('erosion',dige_erosion)
cv2.waitKey(0)
cv2.destroyAllWindows()

kernel = np.ones((3,3),np.uint8)
dige_dilate = cv2.dilate(dige_erosion,kernel,iterations=1)     
cv2.imshow('dilate',dige_dilate)
cv2.waitKey(0)
cv2.destroyAllWindows()
  • 执行结果
点击查看详情

  • 膨胀案例2
pie = cv2.imread('01_Picture/06_pie.png')

kernel = np.ones((30,30),np.uint8)
dilate_1 = cv2.dilate(pie,kernel,iterations=1)
dilate_2 = cv2.dilate(pie,kernel,iterations=2)
dilate_3 = cv2.dilate(pie,kernel,iterations=3)
res = np.hstack((dilate_1,dilate_2,dilate_3))
cv2.imshow('res',res)
cv2.waitKey(0)
cv2.destroyAllWindows()
  • 执行结果
点击查看代码

posted @ 2024-02-21 15:34  DogLeftover  阅读(22)  评论(0)    收藏  举报