目录

形态学—腐蚀操作

形态学—膨胀操作

开运算与闭运算

剃度运算

礼帽与黑帽


形态学—腐蚀操作

对于上示图像,发现有像毛一样的东西,如何去把它去掉?(erode函数)

首先我们先读取这张照片

img=cv2.imread('dige.png')

cv2.imshow('img',img)

cv2.waitKey(0)

cv2.destroyAllWindows()

#(5,5)是盒的大小

kernel=np.ones((5,5),np.uint8)

#iterations是迭代次数,即腐蚀次数

erosion=cv2.erode(img,kernel,iterations=1)

cv2.imshow('erosion',erosion)

cv2.waitKey(0)

cv2.destroyAllWindows()

处理后的结果如下图,可以看到,毛边没有了,而且线条变细了

形态腐蚀,即在一个盒内周围区域的颜色相同则不变,颜色不同(如圆的边缘部分的盒中有黑有白),就会将这个点腐蚀掉(变为黑色),每迭代一次就会腐蚀一次(圆越来越小)

pie=cv2.imread('pie.png')

cv2.imshow('pie',pie)

cv2.waitKey(0)

cv2.destroyAllWindows()

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()

形态学—膨胀操作

仍然采用迪哥图片,先读取图片,然后进行腐蚀操作,腐蚀后发现迪哥的线条变细了,然后开始进行膨胀操作。(dilate函数)

kernel =np.ones((3,3),np.uint8)

#dige_dilate为腐蚀之后的图像

dige_dilate=cv2.dilate(dige_erosion,kernel,iterations=1)

cv2.imshow('dilate',dige_dilate)

cv2.waitKey(0)

cv2.destroyAllWindows()

膨胀操作,盒中框选到了白色,则将其置为白色,与腐蚀操作相反。

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))

cv2.imshow('res',res)

cv2.waitKey(0)

cv2.destroyAllWindows()

开运算与闭运算

两种参数,由下方两个指定

  • cv2.MORPH_OPEN
  • cv2.MORPH_CLOSE

#开:先腐蚀,再膨胀

img=cv2.imread('dige.png')

kernel=np.ones((5,5),np.uint8)

opening=cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel)

cv2.imshow('opening',opening)

cv2.waitKey(0)

cv2.destroyAllWindows()

#闭:先膨胀,再腐蚀

img=cv2.imread('dige.png')

kernel=np.ones((5,5),np.uint8)

closing=cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel)

cv2.imshow('closing',closing)

cv2.waitKey(0)

cv2.destroyAllWindows()

先腐蚀再膨胀,可以去掉毛刺;先膨胀,再腐蚀,毛刺变的比以前还大了。

剃度运算

剃度运算做三件事,一是对原始图像进行一个膨胀,二是对原始图像进行一个腐蚀,三是用膨胀的减去腐蚀的。(图像当中的减法)

#梯度=膨胀-腐蚀

pie=cv2.imread('pie.png')

kernel=np.ones((7,7),uint8)

dilate=cv2.dilate(pie,kernel,iterations=5)

erosion=cv2.erode(pie,kernel,iterations=5)

res=np.hstack((dilate,erosion))

cv2.imshow('res',res)

cv2.waitKey(0)

cv2.destroyAllWindows()

  • cv2.MORPH_GRADIENT   梯度参数

gradient=cv2.morphologyEx(pie,cv2.MORPH_GRADIENT,kernel)

cv2.imshow('gradient',gradient)

cv2.waitKey(0)

cv2.destroyAllWindows()

礼帽与黑帽

  • cv2.MORPH_TOPHAT  礼帽=原始输入-开运算结果

如迪哥例子,原始输入带有毛边,开运算是先腐蚀再膨胀去掉了毛边,所以礼帽剩下的就是毛边

  • cv2.MORPH_BLACKHAT  黑帽=闭运算-原始输入

闭运算是先膨胀再腐蚀,仍然带有毛边,减去原始输入,应剩下一个迪哥的轮廓

#礼帽

img=cv2.imread('dige.png')

tophat=cv2.morphologyEx(img,cv2.MORPH_TOPHAT,kernel)

cv2.imshow('tophat',tophat)

cv2.waitKey(0)

cv2.destroyAllWindows()

#黑帽

img=cv2.imread('dige.png')

blackhat=cv2.morphologyEx(img,cv2.MORPH_BLACKHAT,kernel)

cv2.imshow('blackhat',blackhat)

cv2.waitKey(0)

cv2.destroyAllWindows()

opencv图像处理④相关推荐

  1. 免费送书啦!《 OpenCV图像处理入门与实践》一本全搞定

    OpenCV 的基础图像操作都只是针对图像中的像素点,并不是直接对图像整体进行的操作.而很多时候并不能仅通过改变像素点来进行图像的操作,为此我们需要学习关于图像的算术操作. 1.图像加法 对于两张相同 ...

  2. 《OpenCV图像处理》——1.7 用户交互工具

    本节书摘来自华章计算机<OpenCV图像处理>一书中的第1章,第1.7节,作者:[西]葛罗瑞亚·布埃诺·加西亚(Gloria Bueno García)著,更多章节内容可以访问云栖社区&q ...

  3. opencv图像处理总结

    opencv图像处理基本操作 1. 矩阵数据类型 通用矩阵数据类型: CV_<bit_depth>(S|U|F)C<number_of_channels> 其中,S表示带符号整 ...

  4. python数字图像处理、色彩空间类型转换_Python+OpenCV图像处理—— 色彩空间转换...

    一.色彩空间的转换 代码如下: #色彩空间转换 import cv2 as cv def color_space_demo(img): gray = cv.cvtColor(img, cv.COLOR ...

  5. [Python图像处理] 三十五.OpenCV图像处理入门、算数逻辑运算与图像融合(推荐)

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

  6. 210322阶段三QT事件循环及opencv图像处理

    目录 一.学习的知识点 1.QT事件循环机制 1.1QT是事件驱动的.QT将系统产生的信号(软件中断)转换成QT事件,并且将事件封装成类,所有的事件类都是QEvent派生的,事件的产生和处理就是QT程 ...

  7. OpenCV图像处理(Python)学习笔记

    OpenCV图像处理 OpenCV图像处理 第1章 OpenCV入门 第2章 图像处理基础 2.1 基本表示方法 2.2 感兴趣区域(ROI) 第3章 图像运算 3.1 加法运算 3.2 图像加权和 ...

  8. python 检测直线 交点_Python+OpenCV图像处理——实现直线检测

    简介: 1.霍夫变换(Hough Transform) 霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法.主要用来从图像中分离出具有某种相同特征的几何形状(如,直线 ...

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

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

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

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

最新文章

  1. 剑指offer:不用加减乘除做加法
  2. php header调试,yii2打log
  3. leetcode算法题--数组中出现次数超过一半的数字
  4. 定时器和promise_分析 Promise 内部实现
  5. spring mvc学习(15)Referenced file contains errors
  6. 【Elasticsearch】2021 年的顶级 ETL 工具......以及对 ETL 说“不”的理由
  7. 另外一个给微信企业号发信息的python脚本
  8. HDU2521 反素数【因子数量+打表+水题】
  9. elementui的横向滚动_记一次element-ui配置化table组件的适应性问题(横向滚动条)...
  10. android开发案例1---拦截电话,拯救史迪仔,有序广播
  11. 机械革命Z3 Pro测试,从开箱到翻车到上岸到发烧(多图预警)
  12. UIDataCollector的下载和使用
  13. [NOIP 2009] 细胞分裂
  14. android 按钮带图标 阴影_Android Material Design系列之FloatingActionButton和Snackbar
  15. 面向对象开发期末复习概述(二)
  16. 狂神SpringSecurity学习笔记(基础)
  17. tensorflow中的ops(或者说op)的理解
  18. 前沿重器[24] | 聊聊对话系统:内容输出
  19. a标签实现文件或者图片的下载
  20. 天翼云联想云坚果云我应该选择哪一个呢?

热门文章

  1. 用 Vite+Vue3+Ts 搭建通用后台管理系统
  2. iOS 更改状态栏/导航栏颜色的几种实用方法
  3. 如何理解构建人类命运共同体思想的科学内涵?
  4. I. 剪绳子(中等)
  5. 微信小程序跨页面通信
  6. 写给刚入大学的软件小学弟学妹----C语言学习
  7. 每日新闻:百度云宣布边缘计算开源,发布智能边缘开源平台;英特尔和华为成功完成SA架构的5G互操作性测试;优信淘宝打造二手车供应链...
  8. 【笨嘴拙舌WINDOWS】实践检验之屏幕取色
  9. 我的收藏精品[把它共享出来,相信对大家有点用,毕竟是长时间收藏的] (1)
  10. 腾讯位置 - 逆地址解析(结尾附视频)