700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > opencv 实现图像形态学操作 膨胀和腐蚀 开闭运算 形态学梯度 顶帽和黑帽

opencv 实现图像形态学操作 膨胀和腐蚀 开闭运算 形态学梯度 顶帽和黑帽

时间:2021-12-28 08:59:10

相关推荐

opencv 实现图像形态学操作 膨胀和腐蚀 开闭运算 形态学梯度 顶帽和黑帽

图像膨胀和腐蚀

图解

原理及python实现

更多内容:图像膨胀和腐蚀原理及python实现

opencv中膨胀和腐蚀函数

dilation = cv.dilate(img, kernel) # 膨胀

erosion = cv.erode(img, kernel) # 腐蚀

实验

import cv2 as cvimport numpy as npimg = cv.imread('j.png')img = cv.cvtColor(img,cv.COLOR_BGR2GRAY)ret,th = cv.threshold(img,0,255,cv.THRESH_BINARY+cv.THRESH_OTSU)# 参数1:源图;参数2:核大小;参数3:腐蚀次数erode1 = cv.erode(th,(3,3),10) # 腐蚀dilate1 = cv.dilate(th,(3,3),10) # 扩张result = np.hstack((th,erode1,dilate1))cv.imshow('result',result)cv.waitKey(0)cv.destroyAllWindows()

输出结果类似于上图

cv.erode() 函数参数2:kernel讲解

这个核也叫结构元素,因为形态学操作其实也是应用卷积来实现的。结构元素可以是矩形/椭圆/十字形,可以用cv.getStructuringElement()来生成不同形状的结构元素,比如:

kernel = cv.getStructuringElement(cv.MORPH_RECT, (5, 5)) # 矩形结构

kernel = cv.getStructuringElement(cv.MORPH_ELLIPSE, (5, 5)) # 椭圆结构

kernel = cv.getStructuringElement(cv.MORPH_CROSS, (5, 5)) # 十字形结构

图像开闭运算

原理

开运算:先腐蚀,再膨胀。有效消除物体外的白色噪声。

闭运算:先膨胀,后腐蚀。有效消除物体内的黑色噪声。

python实现

更多内容:图像开闭运算原理及python实现

matlab实现

更多内容:图像开闭运算原理及matlab实现

实验

import cv2 as cvimport numpy as npimg = cv.imread('paojie_g.jpg',0)ret,th = cv.threshold(img,0,255,cv.THRESH_BINARY+cv.THRESH_OTSU)kernel = cv.getStructuringElement(cv.MORPH_RECT, (5, 5)) # 定义结构元素opening = cv.morphologyEx(th, cv.MORPH_OPEN, kernel) # 开运算closing = cv.morphologyEx(th, cv.MORPH_CLOSE, kernel) # 闭运算result = np.hstack((th,opening,closing))cv.imshow('result',result)cv.waitKey(0)cv.destroyAllWindows()

实验结果

形态学梯度

定义

形态学梯度:膨胀图减去腐蚀图,dilation - erosion,这样会得到物体的轮廓:

其它形态学运算

顶帽:原图减去开运算后的图:src - opening

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

黑帽:闭运算后的图减去原图:closing - src

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。