快捷搜索:  汽车  科技

opencv阈值处理函数是什么(OpenCV形态学处理腐蚀膨胀)

opencv阈值处理函数是什么(OpenCV形态学处理腐蚀膨胀)iterations为迭代次数。iterations=2,表示在完成第一次腐蚀的结果图像上再进行腐蚀。img为输入的图像。kernel为卷积核大小,卷积核越小,腐蚀越慢,需要的迭代次数越多。我们先导入接下来操作需要的库文件和图像数据import cv2 import numpy as np # 指定图片所在文件夹 filepath = 'C:\\...\\img\\changed' # 获取文件夹中的某张图 img = cv2.imread(filepath '\\wiseman.jpg') # 显示图片 cv2.imshow('wiseman' img) cv2.waitKey(0) # 设置图片不会自动消失 cv2.destroyAllWindows() # 任意键关闭图像1. 腐蚀操作腐蚀操作,一般处理二值化图像,黑白图像,白色区域减

各位同学好,今天和大家分享一下图像的形态学处理方法。内容有:

膨胀腐蚀、开运算和闭运算、梯度运算、礼帽和黑帽

(1)腐蚀:cv2.erode();(2)膨胀:cv2.dilate();(3)形态学函数:cv2.morphologyEx();

那我们开始吧。

opencv阈值处理函数是什么(OpenCV形态学处理腐蚀膨胀)(1)


正文

我们先导入接下来操作需要的库文件和图像数据

import cv2 import numpy as np # 指定图片所在文件夹 filepath = 'C:\\...\\img\\changed' # 获取文件夹中的某张图 img = cv2.imread(filepath '\\wiseman.jpg') # 显示图片 cv2.imshow('wiseman' img) cv2.waitKey(0) # 设置图片不会自动消失 cv2.destroyAllWindows() # 任意键关闭图像1. 腐蚀操作

腐蚀操作,一般处理二值化图像,黑白图像,白色区域减少。简单理解为,卷积核在图像上移动的过程中,如果卷积核所框住的部分全为黑或全为白,图像不变;如果既有黑又有白,那么按一定策略将白变黑。

腐蚀函数: cv2.erode(img kernel iterations)

img为输入的图像。kernel为卷积核大小,卷积核越小,腐蚀越慢,需要的迭代次数越多。

iterations为迭代次数。iterations=2,表示在完成第一次腐蚀的结果图像上再进行腐蚀。

# 5*5的全1卷积核;uint8是专门用于存储各种图像的(包括RGB,灰度图像等),范围是从0–255 kernel = np.ones((5 5) np.uint8) # 参数为:输入图像,卷积核,迭代次数=1 img2 = cv2.erode(img kernel iterations=1) # 显示图片 cv2.imshow('wiseman2' img2) cv2.waitKey(0) cv2.destroyAllWindows()

下图对比

opencv阈值处理函数是什么(OpenCV形态学处理腐蚀膨胀)(2)

原图

opencv阈值处理函数是什么(OpenCV形态学处理腐蚀膨胀)(3)

腐蚀后的图

2. 膨胀操作

膨胀操作,一般处理二值化图像,白色区域增大。和腐蚀相反,卷积核在图像上移动的过程中,如果既有黑又有白,那么按一定策略将黑变白。

腐蚀函数: cv2.dilate(img kernel iterations)

参数同上,img为输入的图像。kernel为卷积核大小。iterations为迭代次数。

#(2)膨胀操作 # 设置卷积核3*3全1 kernel = np.ones((3 3) np.uint8) # 传入图像,卷积核,迭代次数 img3 = cv2.dilate(img kernel iterations=1) # 显示图片 cv2.imshow('wiseman3' img3) cv2.waitKey(0) cv2.destroyAllWindows()

下图所示

opencv阈值处理函数是什么(OpenCV形态学处理腐蚀膨胀)(4)

原图

opencv阈值处理函数是什么(OpenCV形态学处理腐蚀膨胀)(5)

膨胀后的图

3. 形态学函数

cv2.morphologyEx(img op kernel)

img代表输入图像;kernel代表卷积核;op代表形态学处理参数,如下

  • MORPH_ERODE: 腐蚀(黑变多),与腐蚀函数cv2.erode效果相同
  • MORPH_DILATE: 膨胀(白变多),与膨胀函数cv2.dilate效果相同
  • MORPH_OPEN: 开运算,先腐蚀后膨胀。平滑边界,去除凸起,移除小白点
  • MORPH_CLOSE: 闭运算,先膨胀再腐蚀。填充图像内部小黑洞,填充图像凹陷
  • MORPH_GRADIENT: 梯度计算,用膨胀图减腐蚀图。获得图像的边缘轮廓
  • MORPH_TOPHAT: 礼帽,用原图像减去开运算后的图像。获得原图像中比周围亮的区域
  • MORPH_BLACKHAT: 黑帽,闭运算图像减去原图像。获取原图像中比周围暗的区域
4. 开运算

先腐蚀后膨胀,白色区域先变小后扩张,平滑边界(去掉凸起)、移除白点

cv2.morphologyEx(img cv2.MORPH_OPEN kernel)

#(3)开运算:先腐蚀后膨胀 # 定义卷积核 kernel = np.ones((3 3) np.uint8) # 形态学函数:图像,开运算,卷积核 img4 = cv2.morphologyEx(img cv2.MORPH_OPEN kernel) # 显示图片 cv2.imshow('opening' img4) cv2.waitKey(0) cv2.destroyAllWindows()

效果图在下面。

5. 闭运算

先膨胀后腐蚀,白色区域先变大后缩小,闭运算用于填充图像内部的小黑洞、填充图像的凹陷等,排除小黑洞,连接被误分为许多小块的对象

#(4)闭运算:先膨胀后腐蚀 # 定义卷积核 kernel = np.ones((3 3) np.uint8) # 形态学函数:图像,闭运算,卷积核 img4 = cv2.morphologyEx(img cv2.MORPH_CLOSE kernel) # 显示图片 cv2.imshow('closing' img4) cv2.waitKey(0) cv2.destroyAllWindows()

第一张为原图,第二张为开运算,第三张为闭运算

opencv阈值处理函数是什么(OpenCV形态学处理腐蚀膨胀)(6)

6. 梯度计算

梯度图,用膨胀图减腐蚀图。可以用于获得图像中物体的轮廓,可以突出团块的边缘,保留物体的边缘轮廓。

# ==2== 梯度运算,膨胀图像减去腐蚀图像,得到轮廓信息 # 卷积核 kernel = np.ones((3 3) np.uint8) # 形态学处理函数,输入图像,梯度计算参数,卷积核 gradient = cv2.morphologyEx(img cv2.MORPH_GRADIENT kernel) # 绘图,查看边界信息 cv2.imshow('gradient' gradient) cv2.waitKey(0) cv2.destoryAllWindows()

下图第一张是膨胀图像,第二张是腐蚀图像,第三张是梯度图

opencv阈值处理函数是什么(OpenCV形态学处理腐蚀膨胀)(7)

7. 礼帽

礼帽 = 原始输入 - 开运算结果

可以用于获得原图像中比周围亮的区域,去除白色重叠部分

# ==1== 礼帽 # 获取图像 img = cv2.imread(filepath '\\wiseman.jpg') # 卷积核 kernel = np.ones((8 8) np.uint8) # 形态学处理函数,输入图像,梯度计算参数,卷积核 tophat = cv2.morphologyEx(img cv2.MORPH_TOPHAT kernel) # 绘图,查看边界信息 cv2.imshow('tophat' tophat) cv2.waitKey(0) cv2.destoryAllWindows()

第一张为原图,第二张为开运算,第三张是礼帽

opencv阈值处理函数是什么(OpenCV形态学处理腐蚀膨胀)(8)

8. 黑帽

黑帽 = 闭运算-原始输入

可以用于获取原图像中比周围暗的区域,保留白色重叠部分

# ==2== 黑帽 # 获取图像 img = cv2.imread(filepath '\\wiseman.jpg') # 卷积核 kernel = np.ones((8 8) np.uint8) # 形态学处理函数,输入图像,梯度计算参数,卷积核 blackhat = cv2.morphologyEx(img cv2.MORPH_BLACKHAT kernel) # 绘图,查看边界信息 cv2.imshow('blackhat' blackhat) cv2.waitKey(0) cv2.destoryAllWindows()

第一张是闭运算,第二张是原图,第三张是黑帽

opencv阈值处理函数是什么(OpenCV形态学处理腐蚀膨胀)(9)

最后有惊喜(别错过哦)

跻身大厂是每一个程序员的梦想,也希望有机会可以大放异彩,成绩斐然。不过,不积跬步无以至千里,理想和现实的距离是需要努力来不断缩短的。

所以这里我准备了一些礼包,希望能够帮助到各位小伙伴。

★礼包1

如果对学习没有自制力或者没有一起学习交流的动力,欢迎私信或者评论区留言,我会拉你进学习交流群,我们一起交流学习,报团打卡,群内更有众多福利等你来解锁哟,赶快加入我们吧!

★礼包2

❶Python全套电子书,200本总共6个G电子书资料,囊括Python各大领域。

❷Python练手项目,包括爬虫、数据分析、机器学习、人工智能、小游戏开发。

猜您喜欢: