openCV编程基础24--其他形态学操作

其它形态学操作
顶帽:原图像与开操作之间的差值图像
黑帽:闭操作图像与源图像的差值图像
形态学梯度:基本梯度>基本梯度是用膨胀后的图像减去腐蚀后的图像得到差值图像,称为梯度图像也是opencv中支持的计算形态学梯度的方法,而此方法得到梯度有被称为基本梯度。
内部梯度>是用原图像减去腐蚀之后的图像得到差值图像,称为图像的内部梯度
外部梯度>图像膨胀之后再减去原来的图像得到的差值图像,称为图像的外部梯度

import cv2 as cv
import numpy as np


# 顶帽操作:原图像与开操作之间的差值图像
def top_hat_demo(image):
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)    # 彩图转灰度
    kernel = cv.getStructuringElement(cv.MORPH_RECT, (15, 15))  # 定义尺度大小
    dst = cv.morphologyEx(gray, cv.MORPH_TOPHAT, kernel)   #顶帽操作
    cimage = 100   #  定义一个常规数字
    dst = cv.add(dst, cimage)   # 把原图搞亮100
    cv.imshow("tophat", dst)

# 黑帽操作:闭操作图像与源图像的差值图像
def black_hat_demo(image):
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)    # 彩图转灰度
    kernel = cv.getStructuringElement(cv.MORPH_RECT, (15, 15))  # 定义尺度大小
    dst = cv.morphologyEx(gray, cv.MORPH_BLACKHAT, kernel)   #顶帽操作
    cimage = 100   #  定义一个常规数字
    dst = cv.add(dst, cimage)   # 把原图搞亮100
    cv.imshow("blackhat", dst)

# 基本梯度>基本梯度是用膨胀后的图像减去腐蚀后的图像得到差值图像,
# 称为梯度图像也是opencv中支持的计算形态学梯度的方法,
# 而此方法得到梯度有被称为基本梯度
def gradient1_demo(image):
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)    # 彩图转灰度
    kernel = cv.getStructuringElement(cv.MORPH_RECT, (3, 3))  # 定义尺度大小
    dst = cv.morphologyEx(gray, cv.MORPH_GRADIENT, kernel)   #顶帽操作
    cv.imshow("jiBenTiDu", dst)


# 内部梯度>是用原图像减去腐蚀之后的图像得到差值图像,称为图像的内部梯度
# 外部梯度>图像膨胀之后再减去原来的图像得到的差值图像,称为图像的外部梯度
def gradient2_demo(image):
    kernel= cv.getStructuringElement(cv.MORPH_RECT, (3, 3))
    dm = cv.dilate(image, kernel)
    em = cv.erode(image, kernel)
    dst1 = cv.subtract(image, em)  # 内梯度
    dst2 = cv.subtract(dm, image)  # 外梯度
    cv.imshow("internal", dst1)
    cv.imshow("external", dst2)



src = cv.imread('F:001.jpg')
#cv.namedWindow('input_image', cv.WINDOW_AUTOSIZE)
cv.imshow("0", src)
top_hat_demo(src)
black_hat_demo(src)
gradient1_demo(src)
gradient2_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()

输出结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值