对图片进行膨胀与腐蚀
操作前的图片:
操作后:
代码实现:
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 imagedef 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指的是腐蚀次数,省略是默认为1for 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_rootfor 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,重复操作几次后的结果与初始时差不多???
对图片进行膨胀与腐蚀相关推荐
- halcon区域腐蚀膨胀算子_OpenCV 图像处理之膨胀与腐蚀
1.什么是膨胀与腐蚀 膨胀与腐蚀属于形态学范围,具体的含义根据字面意思来理解即可.但是更形象的话就是"增肥"与"减肥". 它们的用途就是用来处理图形问题上.总结 ...
- Emgu CV4图像处理之膨胀和腐蚀、梯度计算、开闭运算14(C#)
本文测试环境: win10 64位 vistual studio 2019 Emgu CV 4.6.0 环境配置准备: 1 新增控制台项目,.net framework为4.7.2 2 把win- ...
- OpenCV(六)形态学操作1--基础:膨胀与腐蚀(回调函数)
目录 形态学通用API:morphologyEx 一.基础理论 1.邻接关系 (1)四邻接: (2)D邻接: (3) 八邻接: 2.连通性 (1)四连通: (2)八连通: (3)m连通: 3.形态学基 ...
- OpenCV——膨胀与腐蚀
膨胀与腐蚀的主要功能: 1.消除噪声: 2.分割出独立像素,在图像中连接相邻元素: 3.寻找图像中明显的极大值区域和极小值区域: 4.求图像梯度: 膨胀是求局部最大值的操作: 膨胀和腐蚀操作都是将图像 ...
- 形态学处理:膨胀、腐蚀、开运算、闭运算、形态学梯度、顶帽、黑帽
形态学处理 一 膨胀 二 腐蚀 三 开运算 四 闭运算 五 形态学梯度 六 顶帽 七 黑帽 形态学处理 一 膨胀 代码: #include <opencv2/core/core.hpp> ...
- matlab腐蚀膨胀代码_(三十二)形态学----膨胀和腐蚀
时间为友,记录点滴. 我们在<初始滤波之均值滤波>中有聊过滤波的本质,以及介绍了其中一种线性滤波(均值滤波).对于常见的非线性滤波"中值滤波"也在<视频的读取和处 ...
- OpenCvSharp 形态学操作(膨胀、腐蚀)
什么是形态学操作 用数学形态学(也称图像代数)表示以形态为基础对图像进行分析的数学工具.基本思想是用具有一定形态的结构元素去度量和提取图像中的对应形状以达到对图像分析和识别的目的. 形态学图像处理的数 ...
- python基于水色图像的水质评价_基于Python和遥感图像的膨胀与腐蚀操作
引言 膨胀与腐蚀是图像形态学中的基本操作,本文将从两个角度实现python的膨胀与腐蚀算法,分别是特征提取与分割后处理.目前,在RGB图像领域,这两种形态学算法经常用于分割结果的处理,例如连通区处理. ...
- java 图像膨胀与腐蚀程序_膨胀和腐蚀 - 解决图像缺陷问题
腐蚀 故名思义就是将图片向内进行收缩. 图1 腐蚀示意图 设经过背景减后的图像为 B,经过腐蚀运算处理后的图像为 P,用 S 表示所用 3R圆(为进化计算可由采用3x3的矩形来代替) 的结构元素,计算 ...
最新文章
- 计算机科学和Python编程导论(二 ) Python简介
- 指纹识别开发包 SourceAFIS
- SQL Server 的 Statistics 簡介
- python字符串title函数_python字符串内建函数-capitalize、title、upper
- 硬盘分区与故障排解速查手册(1)
- Linux基础笔记1
- 【java】swing窗口中的JOptionPane类及字符串转其他数据类型的应用
- Hbase RegionServer 宕机
- java画图类_JAVA绘图类_Graphics
- SQL常用字符串截取
- android基础教程:多个页面时如何设置首页
- 由对称性知定点一定在x轴上_圆锥曲线解答题的经典答案:由椭圆的对称性知,定点在x轴上?...
- 区块链技术掀起积分系统的又一次“革命”
- 苹果计算机做视频教程,Mac版Final Cut Pro x使用技巧及视频教程
- 计算机化学对高分子科学的贡献,计算机在化学中的应用论文(2)
- Java学习lesson 15
- Android应用安全
- 6种自动化测试框架(总有一款适合你)
- Android的布局管理--表格布局
- Collection和List,Set,Map的关系与说明