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[int(h/2-2):int(h/2+2),50:w-50]=0 # 在圆中间画一条线
- img1 = cv2.erode(src=pie,kernel=(11,11),iterations=3) # 腐蚀
- cv2.imshow('pie',pie)
- cv2.imshow('img1',img1)
- cv2.waitKey(0)
- cv2.destroyAllWindows()
复制代码
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[int(h/2-2):int(h/2+2),50:w-50]=0 # 在圆中间画一条线
- img1 = cv2.dilate(src=pie,kernel=(11,11),iterations=4)
- cv2.imshow('pie',pie)
- cv2.imshow('img1',img1)
- cv2.waitKey(0)
- cv2.destroyAllWindows()
复制代码
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[int(h/2-1):int(h/2+1),50:w-50]=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()
复制代码
5、闭运算
先做膨胀操纵,在做腐蚀操纵。
- import cv2
- import numpy as np
- pie = cv2.imread('pie.png') # 圆
- h,w = pie.shape[:2] # 图像的高,宽
- pie[int(h/2-1):int(h/2+1),50:w-50]=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()
复制代码
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()
复制代码
7、礼帽运算
原始图像 - 开运算图像 = 礼帽运算
可以得到原始图像的噪音点。
- import cv2
- import numpy as np
- pie = cv2.imread('pie.png')
- h,w = pie.shape[:2]
- pie[int(h/2-1):int(h/2+1),:]=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()
复制代码
8、黑帽运算
原始图像 - 闭运算图像 = 黑帽运算
- import cv2
- import numpy as np
- pie = cv2.imread('pie.png')
- h,w = pie.shape[:2]
- pie[int(h/2-1):int(h/2+1),:]=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()
复制代码
9、核函数
- kernel = cv2.getStructuringElement(shape=*,ksize=,anchor=*)
复制代码 kernel:核矩阵。
shape:内核形状,常见的参数如下:
参数 | 表明 | MORPH_RECT | 所有元素都是1 | MORPH_ELLIPSE | 椭圆形位置为1 | MORPH_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()
复制代码- [[1 1 1 1 1] [[0 0 1 0 0] [[0 0 1 0 0]
- [1 1 1 1 1] [1 1 1 1 1] [0 0 1 0 0]
- [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] [0 0 1 0 0]
- [1 1 1 1 1]] [0 0 1 0 0]] [0 0 1 0 0]]
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |