Python3与OpenCV3.3 图像处理(十八)--Canny边缘提取 - Go语言中文社区

Python3与OpenCV3.3 图像处理(十八)--Canny边缘提取


一、什么是边缘检测

图像的边缘检测的原理是检测出图像中所有灰度值变化较大的点,而且这些点连接起来就构成了若干线条,这些线条就可以称为图像的边缘。


二、canny 算法五步骤

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

三、示例代码

 

import cv2 as cv
import numpy as np


def edge(img):
    #高斯模糊,降低噪声
    blurred = cv.GaussianBlur(img,(3,3),0)
    #灰度图像
    gray=cv.cvtColor(blurred,cv.COLOR_RGB2GRAY)
    #图像梯度
    xgrad=cv.Sobel(gray,cv.CV_16SC1,1,0)
    ygrad=cv.Sobel(gray,cv.CV_16SC1,0,1)
    #计算边缘
    #50和150参数必须符合1:3或者1:2
    edge_output=cv.Canny(xgrad,ygrad,50,150)
    #图一
    cv.imshow("edge",edge_output)

    dst=cv.bitwise_and(img,img,mask=edge_output)
    #图二(彩色)
    cv.imshow('cedge',dst)

src=cv.imread('15.jpg')
#图三(原图)
cv.imshow('def',src)
edge(src)
cv.waitKey(0)
cv.destroyAllWindows()
图一

 

图二

图三

觉得不错打赏一下

 

转载于:https://www.cnblogs.com/BMFramework/p/10017277.html

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_33704234/article/details/94445364
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-06-06 09:45:40
  • 阅读 ( 526 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢