【opencv学习笔记 20 Canny边缘提取】

Canny边缘提取

入门级必备!!!

  1. 高斯模糊
  2. 灰度转换
  3. 计算梯度
  4. 非最大梯度抑制
  5. 高低阈值输入二值化图像

相关代码

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()

效果展示

全部评论

相关推荐

05-16 11:16
已编辑
东华理工大学 Java
牛客73769814...:盲猜几十人小公司,庙小妖风大,咋不叫她去4️⃣呢😁
牛客创作赏金赛
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务