图片的腐蚀,膨胀,开丶闭运算,梯度计算,礼帽与黑帽

1 腐蚀操作

  用于图片的去毛刺,内容削减

  

 1 #腐蚀操作
 2 #cv2.erode(src,kernel,iterations) 
 3 #src是图片数字化数组
 4 #kernel则是一个盒,对该盒内的像素进行复试操作,值越小腐蚀能力越狠
 5 #iterations是一个迭代次数,就是说你对这个图片进行几次的腐蚀操作
 6 kernel = np.ones((30,30),np.uint8)
 7 erosion1 = cv2.erode(img,kernel,iterations=1)
 8 erosion2 = cv2.erode(img,kernel,iterations=2)
 9 erosion3 = cv2.erode(img,kernel,iterations=3)
10 res = np.hstack((erosion1,erosion2,erosion3))
11 Cv_Show('Erode Picture',res)

2 膨胀操作

 1 #膨胀操作 
 2 #因为在进行腐蚀操作后,原本不需要的腐蚀的地方会变细,此时可以通过膨胀操作加回来
 3 #cv2.dilate(src,kernel,iterations)
 4 #src是图像数字化数组
 5 #Kernel为盒,对该盒内的像素进行膨胀操作,值越小膨胀能力越强
 6 #iterations是一个迭代次数,就是说你对这个图片进行几次的膨胀操作
 7 kernel = np.ones((30,30),np.uint8)
 8 dilate1 = cv2.dilate(img,kernel,iterations=1)
 9 dilate2 = cv2.dilate(img,kernel,iterations=2)
10 dilate3 = cv2.dilate(img,kernel,iterations=3)
11 res = np.hstack((dilate1,dilate2,dilate3))
12 Cv_Show('Erode Picture',res)

3 开运算,闭运算

  

 1 #开运算就是先腐蚀后膨胀,闭运算是先膨胀后腐蚀
 2 #cv2.morphologyEx(src,type,kernel)
 3 #src是图像数字化数组
 4 #type有cv2.MORPH_OPEN,cv2.MORPH_CLOSE两种
 5 #cv2.MORPH_OPEN就是开运算
 6 #cv2.MORPH_CLOSE就是闭运算
 7 #Kernel为盒,对该盒内的像素进行膨胀操作,值越小膨胀能力越强
 8 kernel3 = np.ones((30,30),np.uint8)
 9 opening = cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel3) #使用开运算
10 closeing = cv2.MORPH_OPEN(img,cv2.MORPH_CLOSE,kernel3) #使用闭运算
11 res = np.hstack((opening,closeing))
12 Cv_Show('morphologyEx Picture', res)

4 梯度运算

1 #梯度运算
2 #梯度 = 膨胀 - 腐蚀
3 #梯度运算是为了得到边界变化的信息
4 gradient = cv2.morphologyEx(img,cv2.MORPH_GRADIENT,kernel3)
5 Cv_Show('Gradient Picture', gradient)

5 礼帽与黑帽

1 #礼帽和黑帽
2 #礼帽 = 原始输入 - 开运算结果 从理论上来说,一个带毛刺的图片优化后没有毛刺 - 原始有毛刺的图,那结果是毛刺
3 #黑帽 = 闭运算 - 原始输入 同样,因为先对毛刺先膨胀后腐蚀,所以有些毛刺可能没腐蚀掉,减去原始后,结果是那些没腐蚀掉的毛刺的边缘
4 topHat = cv2.morphologyEx(img,cv2.MORPH_TOPHAT,kernel3)
5 blackHat = cv2.morphologyEx(img,cv2.MORPH_BLACKHAT,kernel3)
6 res = np.hstack((topHat,blackHat))
7 Cv_Show('TopHat vs BlackHat Picture', res)

 

热门相关:斗神战帝   大神你人设崩了   仗剑高歌   薄先生,情不由己   第一神算:纨绔大小姐