首页 > 编程语言 > 详细

python+opencv形态学处理

时间:2019-12-29 17:48:01      阅读:84      评论:0      收藏:0      [点我收藏+]

环境vscode下的python3.7

opencv形态学处理学习笔记

1、显示原图(读成灰度图)

img = cv2.imread("c:\\Users\\Administrator\\Desktop\\123\\rose.jpg",cv2.IMREAD_GRAYSCALE)
cv2.imshow(img,img)
cv2.waitKey(0)
cv2.destroyAllWindows()

技术分享图片

 

2、腐蚀操作

  原理:白色像素值为255,黑色像素值为0,与0相乘为零导致越来越多像素变为0,逐渐被黑色腐蚀。

#腐蚀操作(矩阵卷积)
#矩阵大小平均和 (3,3)核大小,全为一的矩阵
kernel =np.ones((3,3),np.uint8)
#interation表示次数
erosion = cv2.erode(img,kernel,iterations = 1)
cv2.imshow(erosion,erosion)
cv2.waitKey(0)
cv2.destroyAllWindows()

技术分享图片

   将iteration改成3,核大小为(3,3)

 技术分享图片

  将核大小改成(6,6),iteration为1

技术分享图片

 

3、膨胀操作,与腐蚀操作可理解为逆操作

#膨胀操作
#可以理解为腐蚀的逆操作
dilate = cv2.dilate(img,kernel,iterations = 1)
cv2.imshow(dilate,dilate)
cv2.waitKey(0)
cv2.destroyAllWindows()

技术分享图片

 

通过上面的一对操作组合运算得到的操作

4、开运算

#开运算 先腐蚀,再膨胀
opening = cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel)

cv2.imshow(opening,opening)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

 技术分享图片技术分享图片

  开运算用途:用于除毛刺、孤立的小点,类似一个滤波器。消除白色小物体。

 

5、闭运算

#闭运算 先膨胀,再腐蚀
closeing = cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel)

cv2.imshow(closeing,closeing)
cv2.waitKey(0)
cv2.destroyAllWindows()

技术分享图片技术分享图片

 

   闭运算用途:消除黑色小区域(小型黑洞),黑色毛刺等等。

 6、梯度运算

#梯度运算
#梯度=膨胀-腐蚀
gradient = cv2.morphologyEx(img,cv2.MORPH_GRADIENT,kernel)
cv2.imshow(gradient,gradient)
cv2.waitKey(0)
cv2.destroyAllWindows()

技术分享图片

   梯度主要是为了得到边缘信息。

 

 7、顶帽

#顶帽 = 原始输入-开运算结果
tophat = cv2.morphologyEx(img,cv2.MORPH_TOPHAT,kernel)
cv2.imshow(tophat,tophat)
cv2.waitKey(0)
cv2.destroyAllWindows()

技术分享图片

  用原始图像减去开运算(消除白色小区域),得到白色小区域及边缘,突出白色区域(较亮的区域)。

 

8、黑帽

#黑帽 = 闭运算-原始输入
blackhat = cv2.morphologyEx(img,cv2.MORPH_BLACKHAT,kernel)

cv2.imshow(blackhat,blackhat)
cv2.waitKey(0)
cv2.destroyAllWindows()

技术分享图片    

  用原始图减去闭运算结果(白色小区域),突出黑色小区域(暗色部分)。

python+opencv形态学处理

原文:https://www.cnblogs.com/oldhuang/p/12115333.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!