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)
原文链接:https://www.cnblogs.com/mingrufeng/p/17342105.html
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:图片的腐蚀,膨胀,开丶闭运算,梯度计算,礼帽与黑帽 - Python技术站