对图片进行膨胀与腐蚀

2023-11-09

操作前的图片:

 

 

操作后:

 代码实现:

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,重复操作几次后的结果与初始时差不多???

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对图片进行膨胀与腐蚀 的相关文章

  • Python - 比较同一字典中的值

    我有一本字典 d Trump MAGA FollowTheMoney Clinton dems Clinton Stein FollowTheMoney Atlanta 我想删除字符串列表中的重复字符串 该字符串是键的值 对于这个例子 期望
  • Gunicorn 工作人员无论如何都会超时

    我正在尝试通过gunicorn运行一个简单的烧瓶应用程序 但是无论我做什么 我的工作人员都会超时 无论是否有针对应用程序的活动 工作人员在我设置任何内容后总是会超时timeout值到 是什么导致它们超时 当我发出请求时 请求成功通过 但工作
  • 如何在 __init__ 中使用await设置类属性

    我如何定义一个类await在构造函数或类体中 例如我想要的 import asyncio some code class Foo object async def init self settings self settings setti
  • 在 Django Admin 中调整字段大小

    在管理上添加或编辑条目时 Django 倾向于填充水平空间 但在某些情况下 当编辑 8 个字符宽的日期字段或 6 或 8 个字符的 CharField 时 这确实是一种空间浪费 字符宽 然后编辑框最多可容纳 15 或 20 个字符 我如何告
  • Python 3d 绘图设置固定色阶

    我正在尝试绘制两个 3d 数组 第一个数组的 z 值在范围内 0 15 0 15 第二个来自 0 001 0 001 当我绘图时 色标自动遵循数据范围 如何设置自定义比例 我不想看到 0 001 的浅色 而应该看到 0 15 的浅色 如何修
  • GUI(输入和输出矩阵)?

    我需要创建一个 GUI 将数据输入到矩阵或表格中并读取此表单数据 完美的解决方案是限制输入表单仅允许float 例如 A 1 02 0 25 0 30 0 515 0 41 1 13 0 15 1 555 0 25 0 14 1 21 2
  • 从 Powershell 脚本安装 Python

    当以管理员身份从 PowerShell 命令行运行以下命令时 可以在 Windows 11 上成功安装 Python c temp python 3 11 4 amd64 exe quiet InstallAllUsers 0 Instal
  • Python 3:将字符串转换为变量[重复]

    这个问题在这里已经有答案了 我正在从 txt 文件读取文本 并且需要使用我读取的数据之一作为类实例的变量 class Sports def init self players 0 location name self players pla
  • 尽管我已在 python ctypes 中设置了信号处理程序,但并未调用它

    我尝试过使用 sigaction 和 ctypes 设置信号处理程序 我知道它可以与python中的信号模块一起使用 但我想尝试学习 当我向该进程发送 SIGTERM 时 但它没有调用我设置的处理程序 只打印 终止 为什么它不调用处理程序
  • 如何将 ascii 值列表转换为 python 中的字符串?

    我在 Python 程序中有一个列表 其中包含一系列数字 这些数字本身就是 ASCII 值 如何将其转换为可以在屏幕上回显的 常规 字符串 您可能正在寻找 chr gt gt gt L 104 101 108 108 111 44 32 1
  • 如何将 GAE 中一种 Kind 中的所有实体复制到另一种 Kind 中,而无需显式调用每个属性

    我们如何使用function clone entity 如中所述在 Python 中复制 Google App Engine 数据存储中的实体 而无需在 编译 时知道属性名称 https stackoverflow com question
  • 如何使用 Python 3 检查目录是否包含文件

    我到处寻找这个答案但找不到 我正在尝试编写一个脚本来搜索特定的子文件夹 然后检查它是否包含任何文件 如果包含 则写出该文件夹的路径 我已经弄清楚了子文件夹搜索部分 但检查文件却难倒了我 我发现了有关如何检查文件夹是否为空的多个建议 并且我尝
  • Spider 必须返回 Request、BaseItem、dict 或 None,已“设置”

    我正在尝试从以下位置下载所有产品的图像 我的蜘蛛看起来像 from shopclues items import ImgData import scrapy class multipleImages scrapy Spider name m
  • 带有 LSTM 的 GridSearchCV/RandomizedSearchCV

    我一直在尝试通过 RandomizedSearchCV 调整 LSTM 的超参数 我的代码如下 X train X train reshape X train shape 0 1 X train shape 1 X test X test
  • 为什么 csv.DictReader 给我一个无属性错误?

    我的 CSV 文件是 200 Service 我放入解释器的代码是 snav csv DictReader open screennavigation csv delimiter print snav fieldnames 200 for
  • Python:Goslate 翻译请求返回“503:服务不可用”[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我们不允许提出寻求书籍 工具 软件库等推荐的问题 您可以编辑问题 以便用事实和引文来回答 这个问题似乎不是关于主要由程序员使用的特定编程问
  • 如何将 Django 中的权限添加到模型并使用 shell 进行测试

    我在模型中添加了 Meta 类并同步了数据库 然后在 shell 中创建了一个对象 它返回 false 所以我真的无法理解错误在哪里或者缺少什么是否在其他文件中可能存在某种配置 class Employer User Employer in
  • 如何在 Flask 中的视图函数/会话之间传递复杂对象

    我正在编写一个 Web 应用程序 当 且仅当 用户登录时 该应用程序从第三方服务器接收大量数据 这些数据被解析为自定义对象并存储在list 现在 用户在应用程序中使用这些数据 调用不同的视图 例如发送不同的请求 我不确定什么是最好的模式在视
  • NLTK:查找单词大小为 2k 的上下文

    我有一个语料库 我有一个词 对于语料库中该单词的每次出现 我想获取一个包含该单词之前的 k 个单词和该单词之后的 k 个单词的列表 我在算法上做得很好 见下文 但我想知道 NLTK 是否提供了一些我错过的功能来满足我的需求 def size
  • 如何在Python脚本中从youtube-dl中提取文件大小?

    我是 python 编程新手 我想在下载之前提取视频 音频大小 任何 YouTube 视频 gt gt gt from youtube dl import YoutubeDL gt gt gt url https www youtube c

随机推荐

  • 【Qt】QImage使用总结

    图像格式转换 由 RGB 格式转换成 BGR 格式 QImage rgbSwapped 返回一个QImage 其中所有像素的红色和蓝色组件的值被交换 有效地将RGB图像转换为BGR图像 QImage image fileName QImag
  • 阿里巴巴0322晚春招实习笔试算法题解析 --- sort函数的用法与第二题:数组重排

    sort first last 对容器或普通数组中 first last 范围内的元素进行排序 默认进行升序排序 sort 函数是基于快速排序实现的 sort 只对 array vector deque 这 3 个容器提供支持 默认升序排序
  • Sqli-labs Less09-10 延时型sql盲注 - GET

    本文记录 SQL 注入的学习过程 资料为 SQLi SQLi 博客目录 Less 09 GET Blind Time based Single Quotes 测试漏洞 本关我们从标题就可以看到 基于时间 单引号 所以很明显的这关要我们利用延
  • docker下查看删除kafka下topic

    在公司的项目中需要用到kafka和c 进行消息发送 有一天不知道为啥 下端就出现一直读取消息的问题 所以得清空通道内的消息 1 docker ps 获取到当前kafka的容器id 673e6f1401c7 docker ps a 可以查看所
  • 一个DataFrame赋值的诡异报错 A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc

    DataFrame赋值时报错 A value is trying to be set on a copy of a slice from a DataFrame Try using loc row indexer col indexer v
  • vscode提取扩展时出错XHR tiemout:undefinedms,如何解决?

    问题 vscode提取扩展时出错XHR tiemout undefinedms 如何解决 电脑重启了 断网重新连接了 都不行 解答 该错误通常表示 VS Code 扩展商店的连接超时 可能是网络问题导致的 您可以尝试以下几种方法 检查网络连
  • 一维码EAN 13简介及其解码实现(zxing-cpp)

    一维码EAN 13 属于国际标准条码 由13个数字组成 为EAN的标准编码型式 EAN标准码 依结构的不同 EAN条码可区分为 1 EAN 13码 由13个数字组成 为EAN的标准编码型式 EAN标准码 2 EAN 8码 由8个数字组成 属
  • protobuf的介绍、安装与使用

    1 protobuf是什么 protobuf是google旗下的一款平台无关 语言无关 可扩展的序列化结构数据格式 所以很适合用做数据存储和作为不同应用 不同语言之间相互通信的数据交换格式 只要实现相同的协议格式即同一 proto文件被编译
  • U盘安装ubuntu18.04 LTS图文详细过程

    扣扣技术交流群 460189483 制作U盘引导盘 安装Ubuntu18 04 LTS系统 一 下载Ubuntu18 04 LTS系统的iso文件 镜像下载地址 https www ubuntu com download desktop 下
  • 《基于大数据架构的视频推荐系统设计与实现》摘要

    基于大数据架构的视频推荐系统设计与实现 是一篇有关视频推荐系统的论文 它描述了基于大数据架构的视频推荐系统的设计与实现过程 论文阐述了系统的数据采集 处理 存储 分析以及推荐算法等方面的内容 最终 论文评估了系统的效果并与其他现有系统进行了
  • Python运算符和数据类型、复杂的if嵌套

    一 占位符 1 1 三种占位符 s 字符串占位符 d 整数占位符 f 小数占位符 代码演示 name 张家辉 age 50 money 10 57 print s代言了贪玩蓝月 他今年岁了 name 张家辉代言了贪玩蓝月 他今年50岁了 p
  • 类似error: #147: declaration is incompatible with ""void printf(const char *, ...)....的问题解决

    我们用LPC型号还是其他型号的系统板或开发板时我们编译文件时可能出现如下的错误 C mdk keil5 ARM ARMCC Bin include stdio h 402 error 147 declaration is incompati
  • STM32 Cube 生态体系

    STM32Cube是ST公司开发的一套生态系统 致力于使STM32的开发变的更简单 并且100 开源免费 它包括两大部分 1 PC软件工具 STM32CubeMX STM32CubeIDE STM32CubeProgrammer STM32
  • python的sorted函数自定义排序

    sorted函数语法 sorted iterable cmp key reverse 在python3中去除了cmp参数 所以这里用到python自带的一个将cmp函数转化为key的值的函数 就是functools模块的cmp to key
  • 内核error: implicit declaration of function 'irq_to_gpio' 解决方法

    第一种方法 文件1 drivers mfd Kconfig 中 删除depends on GENERIC HARDIRQS SPI MASTER 添加depends on GENERIC HARDIRQS SPI MASTER ARCH P
  • R语言零基础入门教程 第五章高级绘图(2)ggplot2包绘图工具直方图,散点图,核密度图

    直方图 实例 nutshell包的births2006 smpl数据集 包含了2006年美国出生人口的数据的10 样本 每一条记录有13个变量 使用数据集前 需通过install packages nutshell 安装并加载 以美国出生人
  • JAVA 单列集合总结

    Collection 接口 add remove contains clear size 迭代器遍历 普通迭代器 不能再遍历过程中修改集合的长度 List接口 单列集合 有序可重复 有索引 add index obj remove inde
  • 如何写好C++类

    先讲一个笑话 同时学习两年 Java的程序员在一起讨论的是面向对象和设计模式 而同时学习两年 C 的程序员 在一起讨论的是 template和各种语言规范到底怎么回事情 下面就从公开的资料中撸一撸如何写好一个c 类 从头文件 h 需要包含的
  • 应用程序访问底层硬件

    2 1驱动程序开发原理 在无操作系统的裸机中 或者类似如DOS这样操作系统中 应用程序和硬件的交互是非常简单的 如同牛郎织女 本来就睡在同一张床上 想怎么说悄悄话都行 可是现在情况有变 他们被天河分开了 要想见面聊几句 也要麻烦喜鹊来搭桥
  • 对图片进行膨胀与腐蚀

    操作前的图片 操作后 代码实现 import cv2 import numpy as np from PIL import Image import os import matplotlib pyplot as plt 生成文件夹 def