3.形态学
程序员文章站
2022-06-23 23:42:44
#导入工具包 Erosion腐蚀其原理是在原图的小区域内取局部最小值,其函数是cv2.erode()。这个核也叫结构元素,因为形态学操作其实也是应用卷积来实现的,结构元素可以是矩形/椭圆/十字形,可以用cv2.getStructuringElement()来生成不同形状的结构元素,比如: Dilat ......
#导入工具包
from imutils import *
erosion腐蚀
其原理是在原图的小区域内取局部最小值,其函数是cv2.erode()。这个核也叫结构元素,因为形态学操作其实也是应用卷积来实现的,结构元素可以是矩形/椭圆/十字形,可以用cv2.getstructuringelement()来生成不同形状的结构元素,比如:
# 矩形
kernel1 = cv2.getstructuringelement(cv2.morph_rect, (5,5))
print(kernel1)
[[1 1 1 1 1] [1 1 1 1 1] [1 1 1 1 1] [1 1 1 1 1] [1 1 1 1 1]]
# 椭圆 kernel2 = cv2.getstructuringelement(cv2.morph_ellipse, (5,5)) print(kernel2)
[[0 0 1 0 0] [1 1 1 1 1] [1 1 1 1 1] [1 1 1 1 1] [0 0 1 0 0]]
# 十字形 kernel3 = cv2.getstructuringelement(cv2.morph_cross, (5,5)) print(kernel3)
image = imread('image.jpg') show(image)
1 erosion = cv2.erode(image, kernel1) 2 show(erosion)
1 for i in range(3): 2 erosion = cv2.erode(image, kernel1, iterations=i+1) 3 show(erosion)
dilation膨胀
膨胀与腐蚀相反,取的是局部最大值。cv2.dilate()
1 dilation = cv2.dilate(image, kernel) 2 show(dilation)
1 for i in range(3): 2 dilation = cv2.dilate(image, kernel1, iterations=i+1) 3 show(dilation)
opening开运算
先腐蚀后膨胀叫开运算,其作用是消除小白点。这类形态学操作用cv2.morphologyex()函数实现
#读入图片
1 image2 = imread('image2.jpg') 2 show(image2)
1 # 去除白点 2 opening = cv2.morphologyex(image2, cv2.morph_open, kernel1) 3 show(opening)
closing闭运算
闭运算则相反:先膨胀后腐蚀。其作用是消除小黑点。
1 # 去除黑点 2 closing = cv2.morphologyex(image2, cv2.morph_close, kernel1) 3 show(closing)
# 先开运算再闭运算
1 opening = cv2.morphologyex(image2, cv2.morph_open, kernel1) 2 closing = cv2.morphologyex(opening, cv2.morph_close, kernel1) 3 show(closing)
gradient形态学梯度
膨胀图减去腐蚀图,dilation - erosion,得到物体的轮廓
gradient = cv2.morphologyex(image, cv2.morph_gradient, kernel1) show(gradient)
top hat顶帽/white hat白帽
原图减去开运算后的图:src - opening
1 tophat = cv2.morphologyex(image2, cv2.morph_tophat, kernel1) 2 show(tophat)
black hat黑帽
闭运算后的图减去原图:closing - src
1 blackhat = cv2.morphologyex(image2, cv2.morph_blackhat, kernel1) 2 show(blackhat)
上一篇: 明基i985L激光电视评测 实力如何
下一篇: 散列函数
推荐阅读
-
html5指南-3.如何实现html元素拖拽功能
-
3.翻译:EF基础系列--EF怎么工作的?
-
html5指南-3.如何实现html元素拖拽功能
-
3.数组中重复的数字
-
[springboot 开发单体web shop] 3. 用户注册实现
-
学习9.总结# 1.函数初识 # 2.函数的定义 # 3.函数的调用 # 4.函数的返回值 # 5.函数的参数
-
leetcode的Hot100系列--3. 无重复字符的最长子串--滑动窗口
-
3.翻译:EF基础系列--EF怎么工作的?
-
python数字图像处理之高级形态学处理
-
学习9.内容# 1.函数初识 # 2.函数的定义 # 3.函数的调用 # 4.函数的返回值 # 5.函数的参数