基于python的opencv项目实战P4

04-图像形态学处理

b站地址:https://b23.tv/av77390697/p4

形态学-腐蚀操作

import cv2 
import matplotlib.pyplot as plt 
import numpy as np 
get_ipython().run_line_magic('matplotlib','inline')

#腐蚀dige
img = cv2.imread('dige.png')
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

kernel = np.ones((5,5),np.uint8)
erosion = cv2.erode(img,kernel,iterations = 2) # kernel 为5x5方格 ; 迭代次数2

cv2.imshow('erosion',erosion)
cv2.waitKey(0)
cv2.destroyAllWindows()

#腐蚀pie
pie = cv2.imread('pie.jpg')

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()

形态学-膨胀操作

#导入图片
img = cv2.imread('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) # kernel 为3x3方格 ; 迭代次数

cv2.imshow('erosion',erosion)
cv2.waitKey(0)
cv2.destroyAllWindows()

#膨胀操作
kernel = np.ones((5,5),np.uint8)
dige_dilate = cv2.dilate(dige_erosion,kernel,iterations = 1)

cv2.imshow('dilate',dige_dilate)
cv2.waitKey(0)
cv2.destroyAllWindows()
pie = cv2.imread('pie.jpg')

#不同迭代次数
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()

开运算与闭运算

#开运算:先腐蚀,再膨胀
img = cv2.imread('dige.png')

kernel = np.ones((3,3),np.uint8)
opening = cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel)

cv2.imshow('opening',opening)
cv2.waitKey(0)
cv2.destroyAllWindows()

#闭运算:先膨胀,再腐蚀
img = cv2.imread('dige.png')

kernel = np.ones((3,3),np.uint8)
closing = cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel)

cv2.imshow('closing',closing)
cv2.waitKey(0)
cv2.destroyAllWindows()

梯度运算

#梯度=膨胀-腐蚀
#得到膨胀与腐蚀
pie = cv2.imread('pie.jpg')
kernel = np.ones((7,7),np.uint8)
dilate = cv2.dilate(pie,kernel,iterations = 2)
erosion = cv2.erode(pie,kernel,iterations = 2)


res = np.hstack((dilate,erosion))
cv2.imshow('res',res)
cv2.waitKey(0)
cv2.destroyAllWindows()

#边界信息
gradient = cv2.morphologyEx(pie,cv2.MORPH_GRADIENT,kernel)

cv2.imshow('gradient',gradient)
cv2.waitKey(0)
cv2.destroyAllWindows()

礼帽与黑帽

• 礼帽=原始输入-开运算
• 黑帽=闭运算-原始输入

#礼帽
img = cv2.imread('dige.png')
tophat = cv2.morphologyEx(img,cv2.MORPH_TOPHAT,kernel)

cv2.imshow('tophat',tophat)
cv2.waitKey(0)
cv2.destroyAllWindows()

#黑帽
img = cv2.imread('dige.png')
blackhat = cv2.morphologyEx(img,cv2.MORPH_BLACKHAT,kernel)

cv2.imshow('blackhat',blackhat)
cv2.waitKey(0)
cv2.destroyAllWindows()

你可能感兴趣的:(python学习)