当前位置:   article > 正文

9.opencv-python;cv2库;形态学;MORPH_TOPHAT礼帽与MORPH_BLACKHAT黑帽

morph_tophat
  1. import cv2 #opencv读取的格式是BGR
  2. import numpy as np
  3. import matplotlib.pyplot as plt#Matplotlib是RGB
  4. %matplotlib inline
  5. # 读取
  6. img=cv2.imread('lena.jpg')
  7. img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
  8. # 图像二值化
  9. ret, thresh1 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_BINARY)
  10. # 定义卷积核
  11. kernel = np.ones((3,3),np.uint8)
  12. #礼帽,原图像减去先腐蚀后膨胀的图像,原图像-开运算,剩下毛刺
  13. tophat = cv2.morphologyEx(thresh1, cv2.MORPH_TOPHAT, kernel)
  14. cv2.imshow('tophat', tophat)
  15. cv2.waitKey(0)
  16. cv2.destroyAllWindows()
  17. #黑帽,原图像减去先膨胀后腐蚀的图像(先膨胀毛刺变大,是在毛刺的根部变大,后腐蚀毛刺减小但根部没去除),原图像减去闭运算,相减后剩下毛刺的根部,毛刺的根部连成线成为轮廓。为了证明这个思想,下面做实验。
  18. blackhat = cv2.morphologyEx(thresh1,cv2.MORPH_BLACKHAT, kernel)
  19. cv2.imshow('blackhat ', blackhat )
  20. cv2.waitKey(0)
  21. cv2.destroyAllWindows()

原图-礼帽-黑帽对比,发现礼帽是毛刺,而黑帽是轮廓,看图片的右下角可知。

如果是个圆(毛刺非常小,因为图像没有绝对的圆,只不过毛刺大小卷积核提取不到),没有了(相对来说,特别小的卷积核也能识别到微小的毛刺)毛刺,效果如何呢?

 效果是,失去了作用。说明礼帽和黑帽,是依赖于图像中的毛刺的。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/86611
推荐阅读
相关标签
  

闽ICP备14008679号