OpenCV轻松入门形态学操作

@Fu Xianjun. All Rights Reserved. 

形态学,主要从图像内提取分量信息

1.腐蚀:用来收缩或者细化二值图像中的前景,几日实现去除噪声,元素分割等功能。

dst是腐蚀后所输出的目标图像,该图像和0原始图像具有同样的类型和大小。

src是需要进行腐蚀的原始图像,图像的通道数是可以任意的。但是要求图像的深度必须是CV_8U,CV_17U,CV_32F,CV_64F中的一种。

kernel代表腐蚀擦偶偶是所采用的结构类型,他可以自定义生成,也可以听过函数CV

2.getStructuringElenment()生成。

2.膨胀:是形态学操作中另外一种基本的操作。膨胀操作和腐蚀操作的作用是相反的,膨胀操作能对图像的边界进行扩张 

同腐蚀过程一样,在膨胀过程中也是使用一个结构,原来逐个像素的扫描要被膨胀的图像,并根据结构原核带膨胀图像的关系来确定膨胀结果 

3.开运算:开运算进行的操作是先将图像腐蚀再对腐蚀的结果进行膨胀开运算,可以用于去噪技术的 

4.闭运算是先膨胀后腐蚀的预算,它有助于关闭前景物体内部的小孔或去除物体上的小黑点,还可以将不同的前景图像进行连接 

实训:

OpenCV轻松入门形态学操作_第1张图片

import numpy as np
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#-----------二值化----------------#
ret,binary = cv2.thimport cv2


img = cv2.imread("coins.jpg")reshold(gray,0,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)
#-----------形态学操作------------#
#开操作
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(3,3))
opening = cv2.morphologyEx(binary, cv2.MORPH_OPEN , kernel,iterations = 2)
#膨胀
sure_bg = cv2.dilate(opening,kernel,iterations=3)
#腐蚀
sure_fg = cv2.erode(opening,kernel,iterations=3)
unknow = cv2.subtract(sure_bg,sure_fg)
#----------距离变化-----------#
dist_transform = cv2.distanceTransform(opening,cv2.DIST_L2,5)
cv2.normalize(dist_transform,dist_transform,0,1.0,cv2.NORM_MINMAX)
#-----------二值化-------#
ret,sure_fg = cv2.threshold(dist_transform,0.5*dist_transform.max(),255,0)
sure_fg = np.uint8(sure_fg)
unknow = cv2.subtract(sure_bg,sure_fg)
ret,makers = cv2.connectedComponents(sure_fg)
makers = makers+1
makers[unknow==255]=0
makers_copy = makers.copy()
makers_copy[makers==0]=150
makers_copy[makers==1]=0
makers_copy[makers==0]=255
makers_copy = np.uint8(makers_copy)
#应用分水岭算法
makers = cv2.watershed(img,makers)
img[makers==-1]=[0,0,255]
cv2.imshow("img",img)
cv2.imshow("opening",opening)
cv2.

cv2.imshow("img",img)
cv2.imshow("binary",binary)
cv2.imshow("opening",opening)
cv2.imshow("sure_bg",sure_bg)
cv2.imshow("sure_bg",sure_fg)
cv2.imshow("unknow",unknow)
cv2.imshow("dist_transform",dist_transform)
cv2.waitKey(0)
cv2.destroyAllWindows()

OpenCV轻松入门形态学操作_第2张图片

显示maker

OpenCV轻松入门形态学操作_第3张图片

你可能感兴趣的:(OpenCV轻松入门形态学操作)