OpenCV-Python实战(10)——形态学
1、腐蚀 cv2.erode()可以删除图像中的噪音点。
可以删除毛边。
分割图像(当图像连接的不敷精密时) 。
img = cv2.erode(src=*,kernel=*,anchor=*,iterations=*,borderType=*,borderValue=*)
img:目标图像。
src:原始图像。
kernel:腐蚀核巨细。
anchor:锚点位置,默认是:(-1,-1),核的中心。
iterations:腐蚀操纵迭代次数。
borderType、borderValue:边界样式,边界值,使用默认即可。
import cv2
import numpy as np
pie = cv2.imread('pie.png')# 圆
h,w = pie.shape[:2] # 图像的高,宽
pie=0 # 在圆中间画一条线
img1 = cv2.erode(src=pie,kernel=(11,11),iterations=3)# 腐蚀
cv2.imshow('pie',pie)
cv2.imshow('img1',img1)
cv2.waitKey(0)
cv2.destroyAllWindows() https://i-blog.csdnimg.cn/direct/aa6028a51f3b4112bfb8730e3383ab48.png
2、膨胀 cv2.dilate()
图像沿着边沿向外扩展的操纵。
img = cv2.dilate(src=*,kernel=*,anchor=*,iterations=*,borderType=*,borderValue=*)
img:目标图像。
src:原始图像。
kernel:腐蚀核巨细。
anchor:锚点位置,默认是:(-1,-1),核的中心。
iterations:腐蚀操纵迭代次数。
borderType、borderValue:边界样式,边界值,使用默认即可。
import cv2
import numpy as np
pie = cv2.imread('pie.png')# 圆
h,w = pie.shape[:2] # 图像的高,宽
pie=0 # 在圆中间画一条线
img1 = cv2.dilate(src=pie,kernel=(11,11),iterations=4)
cv2.imshow('pie',pie)
cv2.imshow('img1',img1)
cv2.waitKey(0)
cv2.destroyAllWindows() https://i-blog.csdnimg.cn/direct/942cfdca9dce4e96bd46b34bd4d658d6.png
3、形态学通用函数 cv2.morphologyEx()
img = cv2.morphologyEx(src=*,op=*,kernel=*,anchor=*,iterations=*,borderType=*,borderValue=*) img:目标图像。
src:原始图像。
op:操纵方式,常见操纵方式如下表所示:
操纵方式表明MOREPH_ERODE腐蚀MOREPH_DILATE膨胀MOREPH_OPEN开运算MOREPH_CLOSE闭运算MOREPH_GRADIENT形态学梯度MOREPH_TOPHAT规矩运算MOREPH_BLACKHAT黑帽运算 kernel:腐蚀核巨细。
anchor:锚点位置,默认是:(-1,-1),核的中心。
iterations:腐蚀操纵迭代次数。
borderType、borderValue:边界样式,边界值,使用默认即可。
4、开运算 cv2.morphologyEx()
先做腐蚀,在做膨胀操纵。
import cv2
import numpy as np
pie = cv2.imread('pie.png')# 圆
h,w = pie.shape[:2] # 图像的高,宽
pie=255 # 在圆中间画一条线
img1 = cv2.morphologyEx(src=pie,op=cv2.MORPH_OPEN,kernel=(11,11),iterations=3)
cv2.imshow('pie',pie)
cv2.imshow('img1',img1)
cv2.waitKey(0)
cv2.destroyAllWindows() https://i-blog.csdnimg.cn/direct/da28a09faa5d49209f76dde1dafdb915.png
5、闭运算
先做膨胀操纵,在做腐蚀操纵。
import cv2
import numpy as np
pie = cv2.imread('pie.png')# 圆
h,w = pie.shape[:2] # 图像的高,宽
pie=0 # 在圆中间画一条线
img1 = cv2.morphologyEx(src=pie,op=cv2.MORPH_CLOSE,kernel=(11,11),iterations=3)
cv2.imshow('pie',pie)
cv2.imshow('img1',img1)
cv2.waitKey(0)
cv2.destroyAllWindows() https://i-blog.csdnimg.cn/direct/ca69fd460ed94388ab026cf439b2efde.png
6、形态学梯度
膨胀操纵后的图像 - 腐蚀操纵后的图像 = 图像边沿
import cv2
pie = cv2.imread('pie.png')# 圆
img1 = cv2.morphologyEx(src=pie,op=cv2.MORPH_GRADIENT,kernel=(11,11),iterations=3)
cv2.imshow('pie',pie)
cv2.imshow('img1',img1)
cv2.waitKey(0)
cv2.destroyAllWindows() https://i-blog.csdnimg.cn/direct/edd91f99b38e483b91fc889f9b999833.png
7、礼帽运算
原始图像 - 开运算图像 = 礼帽运算
可以得到原始图像的噪音点。
import cv2
import numpy as np
pie = cv2.imread('pie.png')
h,w = pie.shape[:2]
pie=255 # 在圆中间画一条线
img1 = cv2.morphologyEx(src=pie,op=cv2.MORPH_TOPHAT,kernel=(11,11))
cv2.imshow('pie',pie)
cv2.imshow('img1',img1)
cv2.waitKey(0)
cv2.destroyAllWindows()
https://i-blog.csdnimg.cn/direct/2e98f5cff5ae4d2f93d898fd89ddaf52.png
8、黑帽运算
原始图像 - 闭运算图像 = 黑帽运算
import cv2
import numpy as np
pie = cv2.imread('pie.png')
h,w = pie.shape[:2]
pie=255 # 在圆中间画一条线
img1 = cv2.morphologyEx(src=pie,op=cv2.MORPH_BLACKHAT,kernel=(11,11))
cv2.imshow('pie',pie)
cv2.imshow('img1',img1)
cv2.waitKey(0)
cv2.destroyAllWindows() https://i-blog.csdnimg.cn/direct/049c8aeaff354812bc10c8b13c39c90d.png
9、核函数
kernel = cv2.getStructuringElement(shape=*,ksize=,anchor=*)
kernel:核矩阵。
shape:内核形状,常见的参数如下:
参数表明MORPH_RECT所有元素都是1MORPH_ELLIPSE椭圆形位置为1MORPH_CROSS十字形位置是1 ksize:内核巨细。
anchor:内核锚点,默认为:(-1,-1),核中心位置。
import cv2
kernel1 = cv2.getStructuringElement(shape=cv2.MORPH_RECT,ksize=(5,5))
kernel2 = cv2.getStructuringElement(shape=cv2.MORPH_ELLIPSE,ksize=(5,5))
kernel3 = cv2.getStructuringElement(shape=cv2.MORPH_CROSS,ksize=(5,5))
print(kernel1)
print(kernel2)
print(kernel3)
cv2.waitKey(0)
cv2.destroyAllWindows() [ [ [
] ] ] https://i-blog.csdnimg.cn/direct/16cd51acaf43425db5f3c5826b5c98ad.gif
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]