翼度科技»论坛 编程开发 python 查看内容

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

10

主题

10

帖子

30

积分

新手上路

Rank: 1

积分
30
1 腐蚀操作
  用于图片的去毛刺,内容削减
  
  1. 1 #腐蚀操作
  2. 2 #cv2.erode(src,kernel,iterations)
  3. 3 #src是图片数字化数组
  4. 4 #kernel则是一个盒,对该盒内的像素进行复试操作,值越小腐蚀能力越狠
  5. 5 #iterations是一个迭代次数,就是说你对这个图片进行几次的腐蚀操作
  6. 6 kernel = np.ones((30,30),np.uint8)
  7. 7 erosion1 = cv2.erode(img,kernel,iterations=1)
  8. 8 erosion2 = cv2.erode(img,kernel,iterations=2)
  9. 9 erosion3 = cv2.erode(img,kernel,iterations=3)
  10. 10 res = np.hstack((erosion1,erosion2,erosion3))
  11. 11 Cv_Show('Erode Picture',res)
复制代码
2 膨胀操作
  1. 1 #膨胀操作
  2. 2 #因为在进行腐蚀操作后,原本不需要的腐蚀的地方会变细,此时可以通过膨胀操作加回来
  3. 3 #cv2.dilate(src,kernel,iterations)
  4. 4 #src是图像数字化数组
  5. 5 #Kernel为盒,对该盒内的像素进行膨胀操作,值越小膨胀能力越强
  6. 6 #iterations是一个迭代次数,就是说你对这个图片进行几次的膨胀操作
  7. 7 kernel = np.ones((30,30),np.uint8)
  8. 8 dilate1 = cv2.dilate(img,kernel,iterations=1)
  9. 9 dilate2 = cv2.dilate(img,kernel,iterations=2)
  10. 10 dilate3 = cv2.dilate(img,kernel,iterations=3)
  11. 11 res = np.hstack((dilate1,dilate2,dilate3))
  12. 12 Cv_Show('Erode Picture',res)
复制代码
3 开运算,闭运算
  
  1. 1 #开运算就是先腐蚀后膨胀,闭运算是先膨胀后腐蚀
  2. 2 #cv2.morphologyEx(src,type,kernel)
  3. 3 #src是图像数字化数组
  4. 4 #type有cv2.MORPH_OPEN,cv2.MORPH_CLOSE两种
  5. 5 #cv2.MORPH_OPEN就是开运算
  6. 6 #cv2.MORPH_CLOSE就是闭运算
  7. 7 #Kernel为盒,对该盒内的像素进行膨胀操作,值越小膨胀能力越强
  8. 8 kernel3 = np.ones((30,30),np.uint8)
  9. 9 opening = cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel3) #使用开运算
  10. 10 closeing = cv2.MORPH_OPEN(img,cv2.MORPH_CLOSE,kernel3) #使用闭运算
  11. 11 res = np.hstack((opening,closeing))
  12. 12 Cv_Show('morphologyEx Picture', res)
复制代码
4 梯度运算
  1. 1 #梯度运算
  2. 2 #梯度 = 膨胀 - 腐蚀
  3. 3 #梯度运算是为了得到边界变化的信息
  4. 4 gradient = cv2.morphologyEx(img,cv2.MORPH_GRADIENT,kernel3)
  5. 5 Cv_Show('Gradient Picture', gradient)
复制代码
5 礼帽与黑帽
  1. 1 #礼帽和黑帽
  2. 2 #礼帽 = 原始输入 - 开运算结果 从理论上来说,一个带毛刺的图片优化后没有毛刺 - 原始有毛刺的图,那结果是毛刺
  3. 3 #黑帽 = 闭运算 - 原始输入 同样,因为先对毛刺先膨胀后腐蚀,所以有些毛刺可能没腐蚀掉,减去原始后,结果是那些没腐蚀掉的毛刺的边缘
  4. 4 topHat = cv2.morphologyEx(img,cv2.MORPH_TOPHAT,kernel3)
  5. 5 blackHat = cv2.morphologyEx(img,cv2.MORPH_BLACKHAT,kernel3)
  6. 6 res = np.hstack((topHat,blackHat))
  7. 7 Cv_Show('TopHat vs BlackHat Picture', res)
复制代码
 

来源:https://www.cnblogs.com/mingrufeng/p/17342105.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具