跳转至

数学形态学梯度

概要

数学形态学梯度, 就是为了获得图像的边缘.

keywords 数学形态学 图像边缘

数学形态学梯度 gradient-明确国界

关于数学形态学, 阿凯这里简单提一下.

数学形态学梯度 = 图像膨胀 - 图像腐蚀 从而获取到图像的边缘.

gradient = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)

源代码
src/gradient_demo_v1.py

'''
    数学形态学 获取形态学梯度 gradient
'''
import cv2
import numpy as np

# 读入灰度图
img = cv2.imread("dao-bin.png", flags=cv2.IMREAD_GRAYSCALE)

# 创建 核
kernel = np.ones((5,5), np.uint8)
# 获取形态学梯度
gradient = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)

cv2.imwrite('dao_gradient_k5.png', np.hstack((img, gradient)))

dao_gradient_k5

阿凯用opencv自带的逻辑运算, 也可以实现形态学梯度.

别着急, 在二值化逻辑运算阿凯会介绍opencv的二进制逻辑运算.

源代码

src/gradient_demo_v2.py

'''
    数学形态学 获取形态学梯度 gradient
'''
import cv2
import numpy as np

# 读入灰度图
img = cv2.imread("dao-bin.png", flags=cv2.IMREAD_GRAYSCALE)

# 创建 核
kernel = np.ones((5,5), np.uint8)
# 获取形态学梯度
erode = cv2.erode(img, kernel)
dilate = cv2.dilate(img,kernel)
gradient = cv2.bitwise_xor(dilate, erode)

cv2.imwrite('dao_gradient_k5_v2.png', np.hstack((img, gradient)))

dao_gradient_k5_v2