图像的形态学操作有基本的腐蚀和膨胀操作和其余扩展形态学变换操作(高级操作)-----开运算,闭运算,礼帽(顶帽)操作,黑帽操作。。。(主要也是为了去噪声,改善图像)

形态学操作都是用于处理二值图像(其实也可以用于彩图,只是结果....)的,1位白,0位黑。。。

主要是基于卷积核的操作,设立一个指定大小的核,然后用这个核的中心点(默认的,可以修改)分别在每个像素点对照一遍,如果有与周围的值不同的改变值(1为0,0为1)就是腐蚀操作,

将周围像素的最大值赋给全部像素为膨胀操作,其他高级操作都是在腐蚀和膨胀的基础之上的操作。。

图像膨胀是图像腐蚀的逆运算


图像腐蚀操作

#图像腐蚀
#dst = cv.erode(src,kernel,iterations) # kennel卷积核 默认为3*3 iterations迭代次数 默认为1
img = cv.imread("E:/pictures/1.jpeg")
kernel = np.ones((5,5),np.uint8) #设置一个5*5的核
erode = cv.erode(img,kernel,iterations=9)
cv.imshow("orginal",img)
cv.imshow("erode",erode)
cv.waitKey()
cv.destroyAllWindows()

  


图像膨胀:

#图像膨胀
img = cv.imread("E:/pictures/erode.jpg",cv.IMREAD_UNCHANGED)
kernel = np.ones((5,5),np.uint8)
erode = cv.erode(img,kernel,iterations=1)
dilate = cv.dilate(erode,kernel,iterations=1)
cv.imshow("orginal",img)
cv.imshow("erode",erode)
cv.imshow("dilate",dilate)
cv.waitKey()
cv.destroyAllWindows()

  


开运算:先腐蚀后膨胀,用来消除小物体、在纤细点处分离物体、平滑较大物体的边界的同时并不明显改变其面积。

#开运算         开运算=膨胀(腐蚀(img))
img = cv.imread("E:/pictures/close1.png")
kernel = np.ones((6,6),np.uint8)
morphologyEx = cv.morphologyEx(img,cv.MORPH_OPEN,kernel) #主要是MORPH_OPEN参数
cv.imshow("orginal",img)
cv.imshow("morphologyEx",morphologyEx)
cv.waitKey()
cv.destroyAllWindows()

  


闭运算:先膨胀后腐蚀,闭运算能够排除小的黑色区域。

#闭运算         开运算=腐蚀(膨胀(img))
img = cv.imread("E:/pictures/close1.png")
kernel = np.ones((7,7),np.uint8)
morphologyEx = cv.morphologyEx(img,cv.MORPH_CLOSE,kernel) #主要是MORPH_CLOSE参数
cv.imshow("orginal",img)
cv.imshow("morphologyEx",morphologyEx)
cv.waitKey()
cv.destroyAllWindows()

  


梯度运算:膨胀图与腐蚀图之差,通常用来保留边缘轮廓(不是轮廓和边缘识别)

#梯度运算        梯度运算=膨胀-腐蚀
img = cv.imread("E:/pictures/close1.png")
kernel = np.ones((7,7),np.uint8)
morphologyEx = cv.morphologyEx(img,cv.MORPH_GRADIENT,kernel) #主要是MORPH_GRADIENT# 参数
cv.imshow("orginal",img)
cv.imshow("morphologyEx",morphologyEx) #礼帽=原图-开运算 得到噪声
cv.waitKey() #黑帽=闭运算-原图 得到较小的点
cv.destroyAllWindows() #礼帽和黑帽操作都是参数的不同,就不一一上代码了 #MORPH_TOPHAT #MORPH_BLACKHAT

  

opencv学习笔记(五)----图像的形态学操作的更多相关文章

  1. 【opencv学习笔记五】一个简单程序:图像读取与显示

    今天我们来学习一个最简单的程序,即从文件读取图像并且创建窗口显示该图像. 目录 [imread]图像读取 [namedWindow]创建window窗口 [imshow]图像显示 [imwrite]图 ...

  2. [OpenCV学习笔记3][图像的加载+修改+显示+保存]

    正式进入OpenCV学习了,前面开始的都是一些环境搭建和准备工作,对一些数据结构的认识主要是Mat类的认识: [1.学习目标] 图像的加载:imread() 图像的修改:cvtColor() 图像的显 ...

  3. opencv学习笔记3——图像缩放,翻转和阈值分割

    #图像的缩放操作 #cv.resize(src,dsize,dst=None,,fx=None,fy=None,interpolation=None) #src->原图像,dsize->目 ...

  4. OpenCV学习笔记(十一) 轮廓操作

    在图像中寻找轮廓 首先利用Canny算子检测图像的边缘,再利用Canny算子的输出作为 寻找轮廓函数 findContours 的输入.最后用函数 drawContours 画出轮廓.边界Counto ...

  5. OpenCV学习笔记:矩阵的掩码操作

    矩阵的掩码操作很简单.其思想是:根据掩码矩阵(也称作核)重新计算图像中每个像素的值.掩码矩阵中的值表示近邻像素值(包括该像素自身的值)对新像素值有多大影响.从数学观点看,我们用自己设置的权值,对像素邻 ...

  6. OpenCV学习笔记(10)——图像梯度

    学习图像梯度,图像边界等 梯度简单来说就是求导. OpenCV提供了三种不同的梯度滤波器,或者说高通滤波器:Sobel,Scharr和Lapacian.Sobel,Scharr其实就是求一阶或二阶导. ...

  7. [OpenCV学习笔记2][Mat数据类型和操作]

    [Mat数据类型和基本操作] ®.运行环境:Linux(RedHat+OpenCV3.0) 1.Mat的作用: Mat类用于表示一个多维的单通道或者多通道的稠密数组.能够用来保存实数或复数的向量.矩阵 ...

  8. OpenCV学习笔记(十) 直方图操作

    直方图计算 直方图可以统计的不仅仅是颜色灰度, 它可以统计任何图像特征 (如 梯度, 方向等等).直方图的一些具体细节: dims: 需要统计的特征的数目, 在上例中, dims = 1 因为我们仅仅 ...

  9. opencv学习笔记(七)---图像金字塔

    图像金字塔指的是同一图像不同分辨率的子图的集合,有向下取样金字塔,向上取样金字塔,拉普拉斯金字塔....它是图像多尺度表达的一种,最主要的是用于图像的分割 向下取样金字塔指高分辨率图像向低分辨率图像的 ...

随机推荐

  1. MySQL高可用MHA实战

    MySQL高可用架构MHA介绍 简介: MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职 ...

  2. Python基础学习三 字符串

    字符串方法 slit = ['a', 'b', 'c', 'd', 'f', 'g'] s2='hhhhhhhhhh' tu = (1,2,3,4,5) d={'name':'nnn','age':1 ...

  3. linux多线程默认栈大小和最大线程数

    linux的线程栈大小可以使用ulimit -s查看,对于ubunt 2.6的内核线程栈的默认大小为8M,如下: shine@shine-bupt:~/Program/C$ ulimit -s 819 ...

  4. hibernate反向生成奇葩错误

    错误场景 最近搞一个hibernate的项目,由于好久不用hibernate了,稍微有点生疏(自从用了ibatis–>mybatis后).这个项目用了hibernate,和ibatis.myba ...

  5. Java调用Webservice(asmx)的几个例子

    Java调用Webservice(asmx)的几个例子 2009-06-28 17:07 写了几个调用例子: 1. import org.apache.axis.client.*;import org ...

  6. mfs监控

    web gui 监控 gui_info.jpg (143.72 KB, 下载次数: 83) gui_most.jpg (209.36 KB, 下载次数: 82) gui_master_info.jpg ...

  7. tomcat在linux服务器上部署应用

    连接服务器 服务器地址:xxx.xxx.xxx.xxx 用户名:xxxx 密码:xxxx 进入到服务器中的tomcat路径,关闭服务器,例如 路径:/opt/wzgcyth/apache-tomcat ...

  8. 一段上传图片预览JS脚本,Input file图片预览的实现

    在深圳做项目的时候,需要一个用户上传头像预览的功能!是在网上找了好多,都不太满意.要么是flash的,要么是Ajax上传后返回图片路径的,要么压根就是不能用的.幸运的是在这个项目以前有人写过一个图片预 ...

  9. orzdba工具安装注意事项

    orzdba是一个监控mysql性能的一个比较好用的perl脚本,是淘宝开源的小工具,下载地址http://code.taobao.org/p/orzdba/src/trunk/ 配置过程中除了参照& ...

  10. html5操作类名API——classlist

    tagNode.classList.add('123'); // 添加类 tagNode.classList.remove('bbb'); // 删除类 tagNode.classList.toggl ...