图像形态学操作

Posted exciting

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图像形态学操作相关的知识,希望对你有一定的参考价值。

形态学-腐蚀操作

img = cv2.imread(dige.png)

cv2.imshow(img, img)
cv2.waitKey(0)
cv2.destroyAllWindows()

技术图片

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

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

技术图片

pie = cv2.imread(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()

技术图片

 

形态学-膨胀操作

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)

cv2.imshow(erosion, 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()

技术图片 技术图片

pie = cv2.imread(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()

技术图片

 

开运算与闭运算

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

kernel = np.ones((5,5),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((5,5),np.uint8) 
closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)

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

技术图片

 

梯度运算

# 梯度=膨胀-腐蚀
pie = cv2.imread(pie.png)
kernel = np.ones((7,7),np.uint8) 
dilate = cv2.dilate(pie,kernel,iterations = 5)
erosion = cv2.erode(pie,kernel,iterations = 5)

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

技术图片

 







以上是关于图像形态学操作的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV 形态学操作应用——提取水平与垂直线

机器学习进阶-图像形态学操作-膨胀操作 1.cv2.dilate(进行膨胀操作)

图像处理基于matlab自动报靶系统(重弹孔)

形态学操作-腐蚀与膨胀

图像形态学操作之顶帽操作(TopHat)与黑帽操作(BlackHat)

Matlab图像形态学处理—开操作和闭操作