# 先定义一个opencv展示函数
import cv2
import matplotlib.pyplot as plt
import numpy as np%matplotlib inlinedef cv_show(name,img):cv2.imshow(name,img)cv2.waitKey(0)cv2.destroyAllWindows()

1 形态学-腐蚀操作

img = cv2.imread("dige.png")
cv_show("img",img)
plt.imshow(img)
<matplotlib.image.AxesImage at 0x1d96cb6f0b8>

kernel = np.ones((3,3),np.uint8)
erosion = cv2.erode(img,kernel,iterations = 1)cv_show("erosion",erosion)
plt.imshow(erosion)
<matplotlib.image.AxesImage at 0x1d96cdb6ef0>

pie = cv2.imread("pie.png")cv_show("pie",pie)
plt.imshow(pie)
<matplotlib.image.AxesImage at 0x1d96cce5048>

kernel = np.ones((30,30),np.uint8)
erosion_1 = cv2.erode(pie,kernel,iterations = 1)
erosion_2 = cv2.erode(pie,kernel,iterations = 2)
erosion_3 = cv2.erode(pie,kernel,iterations = 3)
res = np.hstack((erosion_1,erosion_2,erosion_3))
cv2.imshow('res', res)
cv2.waitKey(0)
cv2.destroyAllWindows()
plt.imshow(res)
<matplotlib.image.AxesImage at 0x1d96cf81d30>

2 形态学-膨胀操作

img = cv2.imread("dige.png")cv_show("image",img)
plt.imshow(img)
<matplotlib.image.AxesImage at 0x1d964a398d0>

# 腐蚀
kernel = np.ones((3,3),np.uint8)
dige_erosion = cv2.erode(img,kernel,iterations = 1)cv_show("erosion",dige_erosion)
plt.imshow(dige_erosion)
<matplotlib.image.AxesImage at 0x1d96d12ec88>

# 膨胀
kernel = np.ones((3,3),np.uint8)
dige_dilate = cv2.dilate(dige_erosion,kernel,iterations = 1)cv_show("dilate",dige_dilate)
plt.imshow(dige_dilate)
<matplotlib.image.AxesImage at 0x1d96d37a208>

pie = cv2.imread("pie.png")kernel = np.ones((30,30),np.uint8)
dilate_1 = cv2.dilate(pie,kernel,iterations = 1)
dilate_2 = cv2.dilate(pie,kernel,iterations = 2)
dilate_3 = cv2.dilate(pie,kernel,iterations = 3)
res = np.hstack((dilate_1,dilate_2,dilate_3))cv_show("res",res)
plt.imshow(res)
<matplotlib.image.AxesImage at 0x1d970afea20>

3 开运算与闭运算

# 开:先腐蚀,再膨胀
img = cv2.imread("dige.png")kernel = np.ones((5,5),np.uint8)
opening = cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel)cv_show("opening",opening)
plt.imshow(opening)
<matplotlib.image.AxesImage at 0x1d96cbcf518>

# 闭:先膨胀,再腐蚀
img = cv2.imread("dige.png")kernel = np.ones((5,5),np.uint8)
closing = cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel)cv_show("closing",closing)
plt.imshow(closing)
<matplotlib.image.AxesImage at 0x1d96ca07320>

4 梯度运算

  • 梯度=膨胀-腐蚀
pie = cv2.imread("pie.png")
kernel = np.ones((7,7),np.uint8)
dilate = cv2.dilate(pie,kernel,iterations=5)
erosion = cv2.erode(pie,kernel,iterations=5)res = np.hstack((dilate,erosion))cv_show("res",res)
plt.imshow(res)
<matplotlib.image.AxesImage at 0x1d964b96cc0>

gradient = cv2.morphologyEx(pie,cv2.MORPH_GRADIENT,kernel)cv_show("gradient",gradient)
plt.imshow(gradient)
<matplotlib.image.AxesImage at 0x1d96caf6a90>

5 礼帽与黑帽

  • 礼帽 = 原始输入-开运算结果
  • 黑帽 = 闭运算-原始输入
#礼帽
img = cv2.imread("dige.png")
tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)cv_show("tophat",tophat)
plt.imshow(tophat)
<matplotlib.image.AxesImage at 0x1d96ceb8cc0>

#黑帽
img = cv2.imread("dige.png")
blackhat  = cv2.morphologyEx(img,cv2.MORPH_BLACKHAT, kernel)cv_show("blackhat",blackhat)
plt.imshow(blackhat)
<matplotlib.image.AxesImage at 0x1d96cc4d630>

03 计算机视觉-opencv图像形态学处理相关推荐

  1. pythonopencv图像形态_python+opencv图像形态学处理详细解释(膨胀、腐蚀、开闭运算、礼帽和黑猫)...

    python+opencv图像形态学处理 本篇博客主要是关于形态学中的腐蚀.膨胀.开运算.闭运算.礼帽和黑帽的函数用法. 内容会比较,为方便查阅.代码的解释会写在代码中. 用于测试的图像原图: 一.腐 ...

  2. 《OpenCv视觉之眼》Python图像处理十 :Opencv图像形态学处理之开运算、闭运算和梯度运算原理及方法

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

  3. Python 计算机视觉(十一)—— OpenCV 图像形态学处理

    参考的一些文章以及论文我都会给大家分享出来 -- 链接就贴在原文,论文我上传到资源中去,大家可以免费下载学习,如果当天资源区找不到论文,那就等等,可能正在审核,审核完后就可以下载了.大家一起学习,一起 ...

  4. opencv图像形态学运算

    [图像处理]轻松搞懂形态学处理(腐蚀.膨胀.开闭运算) - 知乎 图像的腐蚀与膨胀 - 简书 图像膨胀&腐蚀 - outthinker - 博客园 图形算法与实战:3.图像最大连通域_进击的C ...

  5. 基于python的opencv图像形态学处理(图像腐蚀与膨胀操作以及礼帽与黑帽)

    腐蚀与膨胀 图像的腐蚀与膨胀互为逆向操作,通常用于处理二值图像(黑白图,以黑色为底面背景),因此需要先进行二值化处理,腐蚀和膨胀通俗的理解就是,在指定大小的卷积核内,如果该卷积核内全为黑色或全为白色, ...

  6. (自己编写函数)Python + Opencv 图像形态学处理(腐蚀、膨胀、开运算、闭运算)

    原理: 形态学运算是结构元素与图像进行逻辑运算,产生新的图像的图像处理方法.二值图像B和结构元素S是定义在笛卡儿网格上的集合,网格中值为1的点是集合的元素. 腐蚀 定义: 算法: a) 用3x3的结构 ...

  7. 《OpenCv视觉之眼》Python图像处理十二 :Opencv图像轮廓提取之基于一阶导数的Roberts算法、Prewitt算法及Sobel算法

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

  8. 《OpenCv视觉之眼》Python图像处理十四 :Opencv图像轮廓提取之Scharr算法和Canny算法

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

  9. OpenCV中图像形态学操作

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:视学算法 图像形态学是图像处理的分支学科,在二值图像处理 ...

最新文章

  1. 阿里云centos 6.5 32位安装可视化界面的方法
  2. 2017-8-22 训练日记
  3. 华中科技大学计算机卓越计划,计算机卓越计划实验班培养计划.doc
  4. VMware推出TrustPoint产品,完善终端用户计算方案
  5. 【CodeForces - 144C】Anagram Search(尺取,滑窗问题,处理字符串计数)
  6. redis集群搭建与配置
  7. Oracle 11g xe版本---总结1
  8. 百度陆奇:AI是5G网络下最好的加速器,技术商业化还要更快
  9. python之show、hide、slidedonw、slideup方法实例
  10. 商务经济与统计中涉及到的所有公式
  11. 转载——sunlogin远程控制安装bug解决
  12. mysql 登录失败18456_sql server 用户'sa'登录失败(错误18456)
  13. 搭建VUE脚手架 + 引入element-ui
  14. ORAN专题系列-11:5G O-RAN RIC的PaaS和SaaS是封闭与开放的融合
  15. 购房从银行贷了一笔款d,准备每个月还款额为p,月利率为r,计算多少月能还清。
  16. iOS安全之【禁止网络代理】(防抓包) | 蓄力计划
  17. git push报错,
  18. 网页中的虚线怎么做?
  19. Blood Cousins (dsu on tree + 求第k级祖先)
  20. Centos7设置阿里源

热门文章

  1. preHandle执行多次问题
  2. matlab 简单算例,(简单算例)基于Matlab的电力系统潮流编程计算.pdf
  3. 华为手机文档里的html,华为手机如何扫描文件变成文档 这扫描功能简直太好用了...
  4. DAX: 复购率计算
  5. android ota功能,支持 OTA 更新  |  Android 开源项目  |  Android Open Source Project
  6. vue实现简单搜索功能
  7. 网络攻防技术(2021期末考试)
  8. 关于计算球体体积的Java代码啾咪~
  9. office2021下载|office2021安装包配置过程图文教程
  10. OpenCV图像各向异性滤波