Canny边缘提取
入门级必备!!!
- 高斯模糊
- 灰度转换
- 计算梯度
- 非最大梯度抑制
- 高低阈值输入二值化图像
相关代码
import cv2 as cv
import numpy as np
def edge_demo(image):
# 高斯模糊
blurred = cv.GaussianBlur(image, (3, 3), 0)
# 灰度化
gray = cv.cvtColor(blurred, cv.COLOR_BGR2GRAY)
# 求x和y方向的梯度
# X Gradient
xgrad = cv.Sobel(gray, cv.CV_16SC1, 1, 0)
# Y Gradient
ygrad = cv.Sobel(gray, cv.CV_16SC1, 0, 1)
# edge9
# 同时用x和y方向的梯度 下面的不用梯度也可以
edge_output = cv.Canny(xgrad, ygrad, 50, 150) # 50为低阈值 150为高阈值
# edge_output = cv.Canny(gray, 50, 150) # 不用梯度
cv.imshow("Canny Edge", edge_output)
# 与运算获得彩色的边界
dst = cv.bitwise_and(image, image, mask=edge_output)
cv.imshow("Color Edge", dst)
src = cv.imread("image20.jpg")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
edge_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()