开闭操作及其他形态学操作

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

import cv2 as cv
import numpy as np

"""
开运算:先进性腐蚀再进行膨胀就叫做开运算,它被用来去除噪声。
闭运算:先膨胀再腐蚀。它经常被用来填充前景物体中的小洞,或者前景物体上的小黑点.
这里我们用到的函数是 cv2.morphologyEx().
开闭操作作用:
1. 去除小的干扰块-开操作
2. 填充闭合区间-闭操作
3. 水平或垂直线提取,调整kernel的row,col值差异。
比如:采用开操作,kernel为(1, 15),提取垂直线,kernel为(15, 1),提取水平线,
"""

"""
其他形态学操作:
顶帽:原图像与开操作之间的差值图像
黑帽:闭操作与原图像之间的差值图像
形态学梯度:其实就是一幅图像膨胀与腐蚀的差别。 结果看上去就像前景物体的轮廓
基本梯度:膨胀后图像减去腐蚀后图像得到的差值图像。
内部梯度:用原图减去腐蚀图像得到的差值图像。
外部梯度:膨胀后图像减去原图像得到的差值图像。
"""
def open_demo(image):
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
    ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
    cv.imshow("binary", binary)
    """
    有时需要构建一个椭圆形 / 圆形的核. 为了实现这种要求,OpenCV提供了
    函数cv2.getStructuringElement().只需要传入的核的形状和大小。
    """
    kernel = cv.getStructuringElement(cv.MORPH_RECT, (3, 3))
    dst = cv.morphologyEx(binary, cv.MORPH_OPEN, kernel=kernel)
    cv.imshow("open_demo", dst)


def close_demo(image):
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
    ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
    cv.imshow("binary", binary)

    kernel = cv.getStructuringElement(cv.MORPH_RECT, (5, 5))
    dst = cv.morphologyEx(binary, cv.MORPH_CLOSE, kernel=kernel)
    cv.imshow("close_demo", dst)


def other_morphology_demo(image):
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
    kernel = cv.getStructuringElement(cv.MORPH_RECT, (5, 5))
    # dst = cv.morphologyEx(gray, cv.MORPH_BLACKHAT, kernel=kernel)  # 黑帽
    dst = cv.morphologyEx(gray, cv.MORPH_TOPHAT, kernel=kernel)  # 顶帽
    cimg = np.array(gray.shape, np.uint8)
    cimg = 100
    # 每像素加100
    dst = cv.add(dst, cimg)

    cv.imshow("top_hat_demo", dst)


def main():
    src = cv.imread("./images/lena.jpg")

    # open_demo(src)
    # close_demo(src)
    other_morphology_demo(src)

    while True:
        k = cv.waitKey(0)
        if k == ord("q"):
            break
    cv.destroyAllWindows()


if __name__ == '__main__':
    main()

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_46456049/article/details/113746295
今日推荐