OpenCV学习Day12---高级形态学

# -*- coding: UTF-8 -*-
import cv2 as cv
import numpy as np
'''
高级形态学变换: 
开运算: MORPH_OPEN
    先腐蚀,再膨胀,可清除一些小东西(亮的),放大局部低亮度的区域 
闭运算: MORPH_CLOSE
    先膨胀,再腐蚀,可清除小黑点 
形态学梯度: MORPH_GRADIENT
    膨胀图与腐蚀图之差,提取物体边缘 
顶帽: MORPH_TOPHAT
    原图像-开运算图,突出原图像中比周围亮的区域 
黑帽: MORPH_BLACKHAT
    闭运算图-原图像,突出原图像中比周围暗的区域
    
开闭操作亦可提取水平线或者垂直线,通过改变结构元素的尺寸:水平线---->如:(1,15);垂直线---->如:(15,1)
'''
def openDemo(image):
    print(image.shape)
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
    ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU)
    cv.imshow("binaryImage", binary)
    kernel = cv.getStructuringElement(cv.MORPH_RECT, (3, 3))#结构元素的设置,内核的形状: MORPH_RECT、MORPH_ELLIPSE、MORPH_CROSS;像素的矩阵
                                    #十字形的element形状唯一依赖于锚点的位置。其他情况下,锚点只是影响了形态学运算结果的偏移。
    #open=cv.morphologyEx(binary,cv.MORPH_OPEN,kernel)#中间参数--选择各种形态学操作
    #cv.imshow("openResult",open)
    #close = cv.morphologyEx(binary, cv.MORPH_CLOSE, kernel)  # 闭操作
    #cv.imshow("closeResult", close)
    #gradient = cv.morphologyEx(binary, cv.MORPH_GRADIENT, kernel)  # 形态学梯度
    #cv.imshow("gradientResult", gradient)
    #tophat = cv.morphologyEx(binary, cv.MORPH_TOPHAT, kernel)  # 顶帽
    #cv.imshow("tophatResult", tophat)
    blackhat = cv.morphologyEx(binary, cv.MORPH_BLACKHAT, kernel)  # 黑帽
    cv.imshow("blackhatResult", blackhat)
#src=cv.imread("E:\OpenCVTests\openANDclose.jpg")
src=cv.imread("E:\OpenCVTests\QQ20190719141453.jpg")#直线提取操作图片
cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)
cv.imshow("input image",src)
openDemo(src)

cv.waitKey(0)
cv.destroyAllWindows()

原图:
在这里插入图片描述
开操作: 先腐蚀,再膨胀,可清除一些小东西(亮的),放大局部低亮度的区域
在这里插入图片描述
闭操作:先膨胀,再腐蚀,可清除小黑点
在这里插入图片描述
开闭操作亦可应用与图像平或者垂直直线的提取:
原图:在这里插入图片描述
水平线提取:结构元素:如(15,1)
在这里插入图片描述
垂直线提取:结构元素:如(1,15)
在这里插入图片描述
原图:
在这里插入图片描述
形态学梯度:膨胀图与腐蚀图之差,提取图像边缘区域
在这里插入图片描述
顶帽:原图像-开运算图,突出原图像中比周围亮的区域
在这里插入图片描述
黑帽:闭运算图-原图像,突出原图像中比周围暗的区域
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值