IT编程 > 脚本编程 > Python

3.形态学

63人参与2019-09-11

#导入工具包

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)

 

 

 

 

您希望与广大热心网友互动!!点此进行留言回复

相关推荐

3.形态学

09-11

python简单分割文件的方法

12-31

PyCharm 设置SciView工具窗口的方法

06-01

Python2.7更新pip:UnicodeDecodeError: 'ascii' codec can't decode byte 0xb7 in position 7: ordinal not in range(128)

04-24

Python常用列表数据结构小结

04-12

教大家使用Python SqlAlchemy

05-31

fetchone函数和fetchall函数返回值的区别

08-12

Python 入门之 内置模块 -- 序列化模块(json模块、pickle模块)

09-11

Django 系列博客(十二)

01-18

python3 kmp 字符串匹配的方法

06-16

最近更新

Python - Unittest小结

01-18

2020为什么要学Python?这个理由至关重要!

01-18

用Python来做一个屏幕录制工具

01-18

利用 wave 库 对音频进行格式处理

01-18

Django框架(五):模型(一) 定义属性

01-18

pyinstaller 3.6版本通过pip安装失败的解决办法

01-18

Python -- CSV文件读写

01-18

【转载】python3 密码字典匹配wifi密码,有界面

01-18

Python3.7之Python介绍

01-17

python 正则表达式参数替换

01-17

网友评论

已有0条评论