对图片进行膨胀与腐蚀

操作前的图片:

 

 

操作后:

 代码实现:

import cv2
import numpy as np
from PIL import Image
import os
import matplotlib.pyplot as plt

# 生成文件夹
def makedir(path):
    folder = os.path.exists(path)

    if not folder:
        os.makedirs(path)
        print("...New folder...")
    else:
        print("...There is this folder!")

# 使用plt显示Image格式的图片
def plt_show_Image_image(image_show):
    plt.figure()
    plt.imshow(image_show)
    plt.show()

def dilate_demo(d_image):
    kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (6, 6))  # 定义结构元素的形状和大小
    # kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (10, 10))  # 椭圆形
    # kernel = cv2.getStructuringElement(cv2.MORPH_CROSS, (6, 6))  # 十字形
    image = cv2.dilate(d_image, kernel)  # 膨胀操作
    # plt_show_Image_image(image)
    return image

def erode_demo(e_image):
    kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (6, 6))  # 定义结构元素的形状和大小  矩形
    # kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (10, 10))  # 椭圆形
    # kernel = cv2.getStructuringElement(cv2.MORPH_CROSS, (6, 6))  # 十字形
    image = cv2.erode(e_image, kernel)  # 腐蚀操作
    # plt_show_Image_image(image)
    return image
    # 腐蚀主要就是调用cv2.erode(img,kernel,iterations),这个函数的参数是
    # 第一个参数:img指需要腐蚀的图
    # 第二个参数:kernel指腐蚀操作的内核,默认是一个简单的3X3矩阵,我们也可以利用getStructuringElement()函数指明它的形状
    # 第三个参数:iterations指的是腐蚀次数,省略是默认为1


for i in range(0, 3):
    # 图片存放的根目录
    root_path = "C:\\FeigeDownload\\humanparsing\\"
    # 同一个文件多次膨胀腐蚀
    # 读取文件夹图片
    a = str(i)
    image_root = os.path.join(root_path, 'SegmantationClassDilateErode' + a)

    # 图片列表
    imagename_list = os.listdir(image_root)  # '2500_1.jpg'

    # 创建文件夹,作为存放图片的地方
    b = str(i + 1)
    new_image_root = os.path.join(root_path, 'SegmantationClassDilateErode' + b)
    makedir(new_image_root)
    # 保存图片
    save_root = new_image_root

    for m in imagename_list:
        path = os.path.join(image_root, m)
        img = cv2.imread(path)
        # plt_show_Image_image(img)

        # 对图片进行膨胀
        mask_dil = dilate_demo(img)

        # 对图片进行腐蚀
        mask_dil_ero = erode_demo(mask_dil)

        # 保存图片
        save_path = os.path.join(save_root, m)
        cv2.imwrite(save_path, mask_dil_ero)
        # plt_show_Image_image(mask_dil_ero)



PS:有个bug,重复操作几次后的结果与初始时差不多???

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Halcon是一种强大的图像处理软件,其中包含了一系列的图像处理功能,其中包括对图片进行膨胀腐蚀操作。 膨胀腐蚀是常用的图像处理方法之一,用于改变图像的形状和结构。膨胀操作可以将图像中的亮区域扩张,从而增大图像中物体的尺寸和面积。而腐蚀操作则可以将图像中的亮区域收缩,从而缩小物体的尺寸和面积。 在Halcon中,可以直接使用膨胀腐蚀操作对图像进行处理。首先,需要加载待处理的图像。可以通过调用相应的函数加载图像文件,并将其存储为一个图像对象。 接下来,可以使用膨胀腐蚀操作函数来对加载的图像进行处理。通过调用相应的函数,并指定膨胀腐蚀的参数,可以实现对图像的膨胀腐蚀操作。 膨胀腐蚀操作函数通常需要指定一个结构元素。结构元素定义了膨胀腐蚀操作的形状和大小。可以选择不同的结构元素类型和大小,以改变膨胀腐蚀的效果。 在进行膨胀腐蚀操作之后,可以将处理后的图像保存或显示。保存处理后的图像可以再次应用于其他图像处理任务,而显示处理后的图像可以帮助我们观察和分析图像的变化。 总而言之,Halcon提供了方便且简单的方式来直接对图像进行膨胀腐蚀操作。通过调用相应的函数以及指定合适的参数,我们可以轻松地实现对图像的膨胀腐蚀处理。 ### 回答2: Halcon是一种视觉处理软件,可以用于对图像进行各种操作,包括膨胀腐蚀膨胀腐蚀是数字图像处理中常用的操作,用于改变图像的形状和纹理。膨胀是增加图像中物体的大小和连通性,而腐蚀是缩小图像中物体的大小和连通性。 在Halcon中,可以使用相关的函数直接对图像进行膨胀腐蚀操作。比如,在膨胀过程中,可以使用函数dilate_image来将图像中的像素点向外扩展,增加连通区域的大小。在函数中可以指定膨胀操作的结构元素大小和形状,以及膨胀的次数。 例如,可以使用以下代码对图像进行膨胀操作: *read_image(Image, 'image.jpg') *threshold(Image, BinaryImage, 100, 255) *gen_rectangle1(StructEl, 3, 3) //创建一个3x3的矩形结构元素 *dilate_image(BinaryImage, DilatedImage, StructEl) //对二值图像进行膨胀操作 腐蚀操作类似,可以使用函数erode_image来将图像中的像素点向内收缩,减小连通区域的大小。 以上是Halcon直接对图像进行膨胀腐蚀操作的简单示例,具体操作还会涉及其他参数和函数的使用。Halcon提供了丰富的图像处理函数,可以根据具体需求选择合适的函数和参数来进行图像膨胀腐蚀等操作。 ### 回答3: Halcon可以直接对图片进行膨胀腐蚀操作。膨胀腐蚀是图像处理中常用的形态学运算,它们可以改变图像中物体的形状和大小。 在Halcon中,可以使用`dilation1()`函数实现膨胀操作,使用`erosion1()`函数实现腐蚀操作。这两个函数都需要传入一个图像以及一个结构元素来进行操作。 膨胀操作会使图像中的物体区域扩张,增大物体的面积和边界。它可以通过多次迭代来实现更大程度的扩张。腐蚀操作则会使图像中的物体区域收缩,减小物体的面积和边界。同样,也可以通过多次迭代来实现更大程度的收缩。 在Halcon中,可以根据具体的需求设置结构元素的形状和大小。结构元素可以是矩形、圆形、十字形等等,其大小会影响到膨胀腐蚀的程度。在进行膨胀腐蚀操作时,结构元素会与图像中的每个像素进行比较,根据比较结果来确定像素的值。 通过在Halcon中调用适当的函数和设置合适的参数,我们可以直接对图像进行膨胀腐蚀操作,从而实现形态学上的变化。这些操作在多个领域中都有广泛的应用,比如图像分析、目标检测等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值