17.python-opencv图像处理-腐蚀和膨胀

第一章 python-opencv-图片导入和显示
第二章 python-opencv图像简单处理
第三章 python-opencv图像mask掩膜处理
第四章 python-opencv图像马赛克
第五章 python-opencv人脸马赛克
第六章 python-opencv人脸检测
第七章 python-opencv图像张贴
第八章 python-opencv轮廓绘制
第九章 python-opencv边缘检测
第十章 python-opencvpython-opencv边缘检测与人脸检测应用
第十一章 python-opencv直方图绘制与直方图均衡
第十二章 python-opencv图像傅里叶变换
第十三章 python-opencv图像的高通滤波和低通滤波
第十四章 python-opencv视频中的人脸检测
第十五章 python-opencv视频人脸检测和保存
第十六章 python-opencv使用摄像头实时人脸检测


文章目录

  • 17.python-opencv图像处理-腐蚀和膨胀
  • 前言
  • 完整代码
  • 部分代码说明
    • 腐蚀
      • 腐蚀原理:
      • 腐蚀代码
      • 腐蚀代码定义
      • 参数说明
    • 膨胀
      • 膨胀原理
      • 膨胀代码
      • 膨胀代码定义
      • 参数说明
  • 结果展示
    • 腐蚀结果
    • 膨胀结果

前言

本篇博客主要介绍如何使用python-opencv对图像进行腐蚀和膨胀图像处理。


完整代码

import numpy as np
import cv2if __name__ == '__main__':# 加载图片,并将图片转化为灰度图像img = cv2.imread('./tong.jpg',flags=cv2.COLOR_BGR2GRAY)# 设置腐蚀和膨胀核kernel = np.ones(shape=[3,3],dtype=np.uint8)  # 通过shape=[3,3]可以改变处理效果# 腐蚀,由多变少,边界容易被腐蚀,去除噪声img1 = cv2.erode(img,kernel=kernel)# 膨胀,图像变粗img2 = cv2.dilate(img1, kernel, iterations=1)cv2.imshow('raw',img)  # 显示原图cv2.imshow('erode',img1)  # 显示腐蚀图像cv2.imshow('dilate2', img2)  # 显示膨胀图像cv2.waitKey(0)cv2.destroyAllWindows()

部分代码说明

腐蚀

腐蚀原理:

假设原图像中有一个前景物体,那么我们用一个结构元素去腐蚀原图的过程是这样的:遍历原图像的每一个像素,然后用结构元素的中心点对准当前正在遍历的这个像素,然后取当前结构元素所覆盖下的原图对应区域内的所有像素的最小值,用这个最小值替换当前像素值。

腐蚀代码

kernel = np.ones(shape=[3,3],dtype=np.uint8)
img1 = cv2.erode(img,kernel=kernel)  # 腐蚀操作

腐蚀代码定义

erode(src, kernel, dst=None, anchor=None, iterations=None, borderType=None, borderValue=None)

参数说明

src:通道数可以是任意的,但深度应该是 CV_8U、CV_16U、CV_16S、CV_32F 或 CV_64F 之一。
. dst: 输出与 src 大小和类型相同的图像。
. kernel: 用于腐蚀的结构元素; 如果 element=Mat(),则使用 3 x 3 矩形结构元素。 可以使用#getStructuringElement 创建内核。
. anchor:锚点在元素中的位置; 默认值 (-1, -1) 表示锚点位于元素中心。
. iterations:应用侵蚀的次数。
. borderType: 像素外推方法。
. borderValue:边界值在恒定边界扩张的情况下,morphologyEx,getStructuringElement

膨胀

膨胀原理

膨胀原理正好与腐蚀原理相反

假设原图像中有一个前景物体,那么我们用一个结构元素去膨胀原图的过程是这样的:遍历原图像的每一个像素,然后用结构元素的中心点对准当前正在遍历的这个像素,然后取当前结构元素所覆盖下的原图对应区域内的所有像素的最大值,用这个最大值替换当前像素值。

膨胀代码

kernel = np.ones(shape=[3,3],dtype=np.uint8)
img2 = cv2.dilate(img1, kernel, iterations=1)

膨胀代码定义

dilate(src, kernel, dst=None, anchor=None, iterations=None, borderType=None, borderValue=None)

参数说明

src:通道数可以是任意的,但深度应该是 CV_8U、CV_16U、CV_16S、CV_32F 或 CV_64F 之一。
. dst: 输出与 src 大小和类型相同的图像。
. kernel: 用于腐蚀的结构元素; 如果 element=Mat(),则使用 3 x 3 矩形结构元素。 可以使用#getStructuringElement 创建内核。
. anchor:锚点在元素中的位置; 默认值 (-1, -1) 表示锚点位于元素中心。
. iterations:应用侵蚀的次数。
. borderType: 像素外推方法。
. borderValue:边界值在恒定边界扩张的情况下,morphologyEx,getStructuringElement

结果展示

腐蚀结果

腐蚀后消除了原图中的噪点,但是“3”字体变细。

膨胀结果

膨胀处理后又将“3”字体变为原来大小。

python-opencv图像处理-腐蚀和膨胀相关推荐

  1. Python+OpenCV图像处理(一篇全)

    参考:1.网易云课堂 Python+OpenCV图像处理 - 网易云课堂 2.[在水一方xym的博客]业精于勤荒于嬉,行成于思毁于随 - CSDN博客 https://blog.csdn.net/za ...

  2. Python OpenCV图像处理 理论 代码

    python opencv图像处理 GitHub - LeBron-Jian/ComputerVisionPractice OpenCV计算机视觉学习 & 代码 OpenCV计算机视觉学习(1 ...

  3. Python+Opencv图像处理新手入门教程(四):视频内容的读取与导出

    一步一步来吧 上一节: Python+Opencv图像处理新手入门教程(三):阈值与二值化 1.Intro 今天这节我们主要看怎么利用opencv读取并处理视频中的内容. 2.VideoCapture ...

  4. Python+Opencv图像处理新手入门教程(三):阈值与二值化

    一步一步来吧 上一节: Python+Opencv图像处理新手入门教程(二):颜色空间转换,图像大小调整,灰度直方图 1.Intro 今天这节我们主要研究利用阈值处理图像.例如对于输入图像: 如何做一 ...

  5. Python+Opencv图像处理新手入门教程(二):颜色空间转换,图像大小调整,灰度直方图

    一步一步来吧 上一节:Python+Opencv图像处理新手入门教程(一):介绍,安装与起步 1.什么是图像 对于计算机而言,图像的本质是一个由像素点构成的矩阵. 例如我们用肉眼很容易分辨一辆汽车的后 ...

  6. python+opencv图像处理之七:直方图均衡化

    python+opencv图像处理之七:直方图均衡化 目录 python+opencv图像处理之七:直方图均衡化 一.直方图均衡化 二.直方图绘制 三.直方图均衡化 四.有限对比适应性直方图均衡化 一 ...

  7. Python+OpenCV图像处理(五)——图像阈值和二值化

    系列文章 Python+OpenCV图像处理(一)--OpenCV框架与图像插值算法 Python+OpenCV图像处理(二)--几何变换 Python+OpenCV图像处理(三)--彩色空间互换 P ...

  8. Python OpenCV 图像处理之直方图的应用,取经之旅第 26 天

    Python OpenCV 365 天学习计划,与橡皮擦一起进入图像领域吧. Python OpenCV 基础知识铺垫 cv2.compareHist 函数 橡皮擦的小节 基础知识铺垫 上篇博客 Py ...

  9. python+opencv图像处理之边缘检测车道线识别

    python+opencv图像处理之边缘检测车道线识别 1.自行安装python和opencv 2.导入我们要使用的相关库 import cv2 from matplotlib import pypl ...

最新文章

  1. 《机器学习》、《算法数据结构》、《LeetCode原创题解》开放下载!
  2. boot项目中pom依赖已经删除了但是maven上还是报红线_Java Web项目是怎么跑起来的?...
  3. 转载:谢谢原作者:块设备驱动实战基础篇四 (逐渐成型,加入ioctl通信机制)
  4. 关于布线设计方案+网络产品的一个网站
  5. OpenMV(三)--实时获取摄像头图片
  6. “不要害怕 RAID!”
  7. bzoj 2427: [HAOI2010]软件安装(Trajan+树形DP)
  8. 【ts】有关报错Line 0: Parsing error: Cannot read property ‘map‘ of undefined的解决方法
  9. python sns可视化小技巧(纪录所得)
  10. 35岁以后你还能干嘛?
  11. Notepad++的64位HexEditor免费下载
  12. 计算思维(Computational Thinking)
  13. annaconda 安装 opencv(cv2)
  14. 546家企业被列为建议支持的国家级专精特新“小巨人”企业
  15. 哪里才能下载到好用的CAD建筑练习图纸?
  16. python爬虫模拟有道翻译
  17. Facebook再现丑闻,约100位应用程序开发人员偷看用户数据
  18. 汽车CAN总线分析仪
  19. 锂电池充放电管理芯片,整套IC组合,长篇文章
  20. 基于SSM的车辆出入系统

热门文章

  1. 【AUTOSAR-CanSM】-2.4-参数CanSMBorTimeTxEnsured详解
  2. zynq中mgtx应用_[ZYNQ入门宝典]GTX高速口带着IBERT一起玩(二)
  3. 前端零碎整理一 浏览器HTTP
  4. C++实例 桌面滚动程序
  5. 乐视网:归还民生信托9亿资金来源与贾跃亭及上市公司无关
  6. Mac电脑如何开启任何来源选项?
  7. 网络协议汇总与终极详细解析
  8. YOLOv5小目标检测(方法与评价)
  9. 我又发现了超赞的软硬件项目,全部开源
  10. 读书类知识付费产品简单介绍