OpenCv之图像形态学(笔记08)

Posted 月疯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCv之图像形态学(笔记08)相关的知识,希望对你有一定的参考价值。

腐蚀:其原理是在原图的小区域内取局部最小值。这个核也叫结构元素,因为形态学操作其实也是应用卷积来实现的,结构元素可以是矩形、椭圆、十字架,可以用cv2.getStructuringElement()来生成不同形状的结构元素
import numpy as np
import matplotlib.pyplot as plt
import cv2
#图像形态学
def show(image):
    plt.imshow(image)
    plt.axis('off')
    plt.show()

def imread(image):
    image=cv2.imread(image)
    #把图像的BGR转换成RGB
    image=cv2.cvtColor(image,cv2.COLOR_BGR2RGB)
    return image

image=imread('im.jpg')
#矩形结构
kernel1=cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))
#椭圆结构
kernel2=cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(5,5))
#十字架结构
kernel3=cv2.getStructuringElement(cv2.MORPH_CROSS,(5,5))

# erosion=cv2.erode(image,kernel1)
# show(image)
#可以进行多次腐蚀
for i in range(3):
    erosion = cv2.erode(image, kernel1,iterations=i+1)
    show(erosion)

腐蚀几次之后的效果: 腐蚀之后黑色越来越多

 

 

#Dilation膨胀
#膨胀与腐蚀相反,取的是局部最大值。cv2.dilate()
import numpy as np
import matplotlib.pyplot as plt
import cv2
#图像形态学
def show(image):
    plt.imshow(image)
    plt.axis('off')
    plt.show()

def imread(image):
    image=cv2.imread(image)
    #把图像的BGR转换成RGB
    image=cv2.cvtColor(image,cv2.COLOR_BGR2RGB)
    return image


#Dilation膨胀
#膨胀与腐蚀相反,取的是局部最大值。cv2.dilate()
for i in range(3):
    dilation = cv2.dilate(image, kernel1,iterations=i+1)
    show(dilation)

 效果展示:膨胀之后白色越来越多

#开运算
#先腐蚀后膨胀胶开运算,其作用是消除小白点。这类形态学操作作用cv2.morphologyEx()函数实现


openging=cv2.morphologyEx(image,cv2.MORPH_OPEN,kernel1)
show(openging)

效果展示:

#闭运算
#闭运算则相反,先膨胀后腐蚀。其作用是消除小黑点。

closeing=cv2.morphologyEx(image,cv2.MORPH_CLOSE,kernel1)
show(closeing)

先开运算,再进行闭运算(消除白点和黑点)


openging=cv2.morphologyEx(image,cv2.MORPH_OPEN,kernel1)
show(openging)

closeing=cv2.morphologyEx(openging,cv2.MORPH_CLOSE,kernel1)
show(closeing)

效果展示:

#Gradient形态学梯度
#膨胀图减去腐蚀图,dilation-erosion,得到物体的轮廓
gradient=cv2.morphologyEx(image,cv2.MORPH_GRADIENT,kernel1)
show(gradient)

#TopHat顶帽/White Hat白帽(把开运算去除掉的白点显示出来)
#原图减去开运算后的图:src-opening
tophat=cv2.morphologyEx(image,cv2.MORPH_TOPHAT,kernel1)
show(tophat)

 

#balckHat黑帽
#闭运算后的图减去原图:closing-src
blackhat=cv2.morphologyEx(image,cv2.MORPH_BLACKHAT,kernel1)
show(blackhat)

 

 

 

以上是关于OpenCv之图像形态学(笔记08)的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV | OpenCV实战从入门到精通系列二 -- OpenCV图像腐蚀

OpenCV | OpenCV实战从入门到精通系列二 -- OpenCV图像腐蚀

OpenCV | OpenCV实战从入门到精通系列二 -- OpenCV图像腐蚀

OpenCV图像处理应用(面向Python)之形态学操作

OpenCV学习笔记 008基于形态学运算的图像变换

opencv-图像形态学之膨胀腐蚀