Python OpenCV 365 天学习计划,与橡皮擦一起进入图像领域吧。本篇博客是这个系列的第 45 篇。
该系列文章导航参考:https://blog.csdn.net/hihell/category_10688961.html

Python OpenCV

  • 基础知识铺垫
  • 腐蚀与膨胀
  • 开闭操作
  • 顶帽与黑帽
  • 形态学梯度(Gradient)
  • 橡皮擦的小节

基础知识铺垫

今天咱们对 OpenCV 形态学操作进行一下回顾,在之前的博客中已经进行了首次学习,如果你还没有看到,可以翻阅 本篇博客,当然还有这篇博客后面的那篇博客。

腐蚀与膨胀

先上结论,腐蚀就是吃掉边缘,膨胀就是扩展边缘。

这次测试前,橡皮擦提前准备了一张图片,测试起来就方便多了,下图的亮点是漂亮(注意这个图的背景色是纯白色)。


对其进行腐蚀操作的代码是:

import cv2 as cv
import numpy as np
src = cv.imread("./t2.png")
gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)# 二值化
ret, thresh = cv.threshold(gray, 127, 255, cv.THRESH_BINARY)
# 腐蚀
kernel = np.ones((5, 5), np.uint8)
dst = cv.erode(thresh, kernel=kernel)cv.imshow("dst", dst)
cv.waitKey(0)
cv.destroyAllWindows()

运行时候,发现文字加粗加黑了,这里要记住,腐蚀是把白色像素吃掉,黑色像素区域越来越多。

如果我们只是单纯的想要去掉原图中的细线,在做二值化的时候,注意反向操作,修改代码如下:

# 二值化
ret, thresh = cv.threshold(gray, 127, 255, cv.THRESH_BINARY_INV)
# 腐蚀
kernel = np.ones((3, 3), np.uint8)
dst = cv.erode(thresh, kernel=kernel)

卷积核调小一些,要不主要的文字都给腐蚀掉了。

膨胀操作,让白色像素区域变多。

import cv2 as cv
import numpy as np
src = cv.imread("./t2.png")
gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)# 二值化
ret, thresh = cv.threshold(gray, 127, 255, cv.THRESH_BINARY_INV)
# 腐蚀
kernel = np.ones((3, 2), np.uint8)
dst1 = cv.erode(thresh, kernel=kernel)
# 膨胀
dst2 = cv.dilate(dst1, kernel=kernel)image = np.vstack((dst1,dst2))
cv.imshow("image", image)
cv.waitKey(0)
cv.destroyAllWindows()

开闭操作

开运算与闭运算就是将腐蚀与膨胀合并到了一个函数中,详细说明在橡皮擦的博客 也有说明。

我们可以应用 cv2.morphologyEx 函数解决开闭运算,后面的顶帽与黑帽也是应用该函数。

不断的进行开运算,会看到黑色的区域一点点的被腐蚀掉了,白色区域逐渐扩大,因为开运算时先腐蚀后膨胀。

# 开操作
kernel = np.ones((3, 3), np.uint8)
dst1 = cv.morphologyEx(thresh, cv.MORPH_OPEN, kernel,iterations=1)
dst2 = cv.morphologyEx(thresh, cv.MORPH_OPEN, kernel,iterations=2)
dst5 = cv.morphologyEx(thresh, cv.MORPH_OPEN, kernel,iterations=5)
dst10 = cv.morphologyEx(thresh, cv.MORPH_OPEN, kernel,iterations=10)image = np.hstack((dst1,dst2,dst5,dst10))


闭运算结果,黑色区域逐渐扩大。

顶帽与黑帽

顶帽也叫做礼帽
顶帽:原图像与开运算结果图之差
黑帽:闭运算结果图与原图像之差

这个地方细琢磨就有趣了,开运算结果可以去除噪声,顶帽是用原图像减去开运算结果,那岂不是为了获取噪声?实际测试之后还真就得到了噪声。

# 开操作
kernel = np.ones((3, 3), np.uint8)
open_img = cv.morphologyEx(thresh, cv.MORPH_OPEN, kernel, iterations=1)# 顶帽运算
dst = cv.morphologyEx(thresh, cv.MORPH_TOPHAT, kernel)
image = np.hstack((gray, open_img, dst))


黑帽操作,得到图像内部的小孔,或前景色的小黑点,下面的图像中在白色星星中可以获取一个笑脸,即前景色中的小黑点。

# 闭运算
kernel = np.ones((5, 5), np.uint8)
close_img = cv.morphologyEx(thresh, cv.MORPH_CLOSE, kernel, iterations=1)# 黑帽运算
dst = cv.morphologyEx(thresh, cv.MORPH_BLACKHAT, kernel)
image = np.hstack((gray, close_img, dst))
cv.imshow("image", image)

形态学梯度(Gradient)

简单说就是用膨胀之后的图像,减去腐蚀后的图像,得到的就是梯度图像。形态学梯度的处理结果是图像中物体的边界。

kernel = np.ones((5, 5), np.uint8)
# 闭运算
close_img = cv.morphologyEx(thresh, cv.MORPH_CLOSE, kernel, iterations=1)
# 开运算
open_img = cv.morphologyEx(thresh, cv.MORPH_OPEN, kernel, iterations=1)
# 梯度运算
result = cv.morphologyEx(thresh, cv.MORPH_GRADIENT, kernel, iterations=1)

橡皮擦的小节

希望今天的 1 个小时你有所收获,我们下篇博客见~

相关阅读


技术专栏

  1. Python 爬虫 100 例教程,超棒的爬虫教程,立即订阅吧
  2. Python 爬虫小课,精彩 9 讲

今天是持续写作的第 87 / 100 天。
如果你想跟博主建立亲密关系,可以关注同名公众号 梦想橡皮擦,近距离接触一个逗趣的互联网高级网虫。
博主 ID:梦想橡皮擦,希望大家点赞、评论、收藏。

OpenCV 形态学操作之腐蚀与膨胀,开运算与闭运算,顶帽与黑帽,图像梯度运算相关知识点回顾相关推荐

  1. OpenCV与图像处理学习六——图像形态学操作:腐蚀、膨胀、开、闭运算、形态学梯度、顶帽和黑帽

    OpenCV与图像处理学习六--图像形态学操作:腐蚀.膨胀.开.闭运算.形态学梯度.顶帽和黑帽 四.图像形态学操作 4.1 腐蚀和膨胀 4.1.1 图像腐蚀 4.1.2 图像膨胀 4.2 开运算与闭运 ...

  2. 形态学操作之腐蚀、膨胀、开运算、闭运算、梯度运算、顶帽和黑帽

    1.腐蚀和膨胀 图像的腐蚀和膨胀实际上是用某种形状的窗去遍历图像中的每一个像素,并用这个形状中的最大值或最小值做为锚点的值.若取的是最小值,则是腐蚀操作,若取的是最大值,则是膨胀操作.这里某种形状可以 ...

  3. 【OpenCV】图像的形态学操作|腐蚀|膨胀|Canny边缘检测

    文章目录 常见图像形态学算法 膨胀和腐蚀概念 erode 膨胀和腐蚀的主要用途 结构元素 图像噪声分类 给图像添加噪声 图像添加噪声 GaussianBlur medianBlur bilateral ...

  4. python+OpenCv笔记(七):图像的形态学操作(腐蚀与膨胀、开闭运算、礼帽与黑帽)

    一.腐蚀与膨胀 腐蚀就是原图中高亮的部分被蚕食,效果图拥有比原图更小的高亮区域. 腐蚀的作用是:消除物体边界点,使目标缩小,可以消除小于结构元素的噪声点. 膨胀就是使原图中高亮的部分扩张,效果图拥有比 ...

  5. opencv 核 腐蚀_OpenCV学习笔记(五)形态学操作:腐蚀、膨胀

    一.形态学概述 我们图像处理中指的形态学,往往表示的是数学形态学.下面一起来了解数学形态学的概念. 下面是来自百度百科对数学形态学的解释: 数学形态学是由一组形态学的代数运算子组成的,它的基本运算有4 ...

  6. OpenCV_05 形态学操作:连通性+腐蚀和膨胀+开闭运算+礼帽和黑帽

    1 连通性 在图像中,最小的单位是像素,每个像素周围有8个邻接像素,常见的邻接关系有3种:4邻接.8邻接和D邻接.分别如下图所示: 4邻接:像素p(x,y)的4邻域是:(x+1,y):(x-1,y): ...

  7. 形态学处理:膨胀、腐蚀、开运算、闭运算、形态学梯度、顶帽、黑帽

    形态学处理 一 膨胀 二 腐蚀 三 开运算 四 闭运算 五 形态学梯度 六 顶帽 七 黑帽 形态学处理 一 膨胀  代码: #include <opencv2/core/core.hpp> ...

  8. 【OpenCV入门教程之十一】 形态学图像处理(二):开运算、闭运算、形态学梯度、顶帽、黑帽合辑

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/23184547 作者:毛星云(浅墨) ...

  9. 灰度图像--形态学处理:腐蚀、膨胀、开操作、闭操作、顶帽、底帽等

    学习DIP第16天 转载请标明本文出处:http://blog.csdn.net/tonyshengtan,欢迎大家转载,发现博客被某些论坛转载后,图像无法正常显示,无法正常表达本人观点,对此表示很不 ...

最新文章

  1. ROS知识(4)----初级教程之常见问题汇总
  2. java课程第七天,匿名内部类以及异常处理
  3. Cloudstack安装(二)
  4. UE4 ShooterGame Demo的开火的代码
  5. AD19 add pins to nets错误_为什么我认为Rust的Result错误处理方式不如Exception
  6. mysql联表查球队比分_mysql – 什么可以导致连接比分为两个查询慢?
  7. java.lang.IllegalStateException: Unable to read meta-data for class 问题的解决
  8. mac使用的文章合集 alfred利器
  9. php dbc2000操作类,超详细菜鸟入门第一课DBC2000详细架设
  10. php网易云信im即时通讯和聊天室
  11. 现实版心灵捕手,MIT研发新型耳机可读取大脑想法
  12. html css 写百度页面,Html+CSS练习(百度注册页面)--div布局实现
  13. STM32单片机初学2-从Keil工程创建开始
  14. 应届生什么专业方向就业面广?
  15. 晏殊几何学讲义(思维导图)
  16. axios下载文件乱码问题 无法解压 文件损坏
  17. 未来数字科技趋势分析与前沿热点解读
  18. LS1021ATWR开发板启动日志分析
  19. 周鸿袆眼里的程序员创业
  20. 交叉编译工具链的设置和命名规则

热门文章

  1. ChatGPT通俗导论:从RL之PPO算法、RLHF到GPT-N、instructGPT
  2. electron-vue打包成Mac版本
  3. 企业网站服务器的配置研究背景,ftp服务器研究背景
  4. LeetCode 328.奇偶链表
  5. 微信小程序中自定义组件
  6. java特种兵 pdf_《Java特种兵(上册)(含CD光盘1张)》怎么样_目录_pdf在线阅读 - 课课家教育...
  7. Win7任务栏右下角图标空白、点击无反应问题的解决
  8. 学习python的第三节课:字符串
  9. java(某人在玩游戏的时候输入密码112233后成功进入游戏(输错3次则被强行退出),要求用程序实现密码验证的过程。)
  10. 闪存趋势可能导致用户回归硬盘