• opencv形态学操作之腐蚀、膨胀


    1.腐蚀

    腐蚀的效果是把图片"变瘦",其原理是在原图的小区域内取局部最小值。因为是二值化图,只有0和255,所以小区域内有一个是0该像素点就为0:

    import cv2
    import numpy as np
    
    img = cv2.imread("666.jpg", 0)
    kernel = np.ones((3, 3), np.uint8)
    erodtion = cv2.erode(img, kernel, iterations=1)

     

     这个核也叫结构元素,因为形态学操作其实也是应用卷积来实现的。结构元素可以是矩形/椭圆/十字形,可以用cv2.getStructuringElement()来生成不同形状的结构元素,比如:

    kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))  # 矩形结构
    kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5))  # 椭圆结构
    kernel = cv2.getStructuringElement(cv2.MORPH_CROSS, (5, 5))  # 十字形结构

    2.膨胀

    膨胀与腐蚀相反,取的是局部最大值,效果是把图片"变胖":

    import cv2
    import numpy as np
    
    img = cv2.imread("666.jpg", 0)
    kernel = np.ones((3, 3), np.uint8)
    erodtion = cv2.dilate(img, kernel, iterations=1)

     

     从上边的效果可以看出,先通过腐蚀将边角毛躁去掉再经过膨胀之后就可以大致复原没有毛躁的原图

    import cv2
    import numpy as np
    
    img = cv2.imread("666.jpg", 0)
    cv2.imshow("img", img)
    kernel = np.ones((2, 2), np.uint8)
    kerne2 = np.ones((7, 7), np.uint8)
    erodtion = cv2.erode(img, kernel, iterations=1)
    cv2.imshow("erodtion", erodtion)
    dilation = cv2.dilate(erodtion, kerne2, iterations=2)
    cv2.imshow("dilation", dilation)
    cv2.waitKey(-1)

  • 相关阅读:
    json 轻解读 转
    android file.mkdir()
    iOS摄像头采集和编码
    对安装React脚手架出错的情况做以详解
    DNGuard Enterprise v2.95 released
    DNGuard Enterprise v3.2 released
    DNGuard 专业版 v2.95 发布
    DNGuard 企业版 v3.1 发布
    Windows 2003 上使用 Windows Live Writer
    .Net 中枚举AppDomains
  • 原文地址:https://www.cnblogs.com/answerThe/p/11451412.html
Copyright © 2020-2023  润新知