Canny边缘检测---OpenCV-Python开发指南(22)

简介: Canny边缘检测---OpenCV-Python开发指南(22)

什么是Canny边缘检测


Canny边缘检测是一种使用多级边缘检测算法检测边缘的方法。该方法由John F. Canny于1986年发表。


Canny边缘检测主要分为4个步骤:


(1)去噪。噪声会影响边缘检测的准确性,因此首先要将噪声过滤掉。


(2)计算梯度的幅度与方向


(3)非极大值抑制,即适当地让边缘“变瘦”。


(4)确定边缘。使用双阈值算法确定最终的边缘信息。


在实际的图像边缘检测中,我们一般先用高斯滤波去除图像噪声(1),然后计算梯度的幅度与角度两个值(2),接着遍历图像中的像素点,去除所有非边缘的点(3)。最后,去除噪声所产生的虚边缘得到最终的边缘信息。(4)


OpenCV中,它给我们提供了cv2.Canny()函数用于Canny边缘检测,其完整定义如下:

def Canny(image, threshold1, threshold2, edges=None, apertureSize=None, L2gradient=None):

image:8位输入图像


threshold1:处理过程中的第一个阈值


threshold2:处理过程中的第二个阈值


edges:计算得到的边缘图像


apertureSize:Sobel滤波器的孔径大小


L2gradient:计算图像梯度幅度的标识。它是一个布尔类型,默认值为False。如果为True,则使用更精确的L2范数进行计算,也就是两个方向的导数的平方和再开方,否则使用L1范数(直接将两个方向导数的绝对值相加),数学公式如下:



获取图像的边缘


既然我们已经了解了其方法的定义,以及具体的实现原理。下面,我们来通过一段程序获取图像的边缘信息,具体代码如下所示:

import cv2
img = cv2.imread("4.jpg", cv2.IMREAD_UNCHANGED)
result1=cv2.Canny(img,100,200)
result2=cv2.Canny(img,30,90)
cv2.imshow("img", img)
cv2.imshow("result1", result1)
cv2.imshow("result2", result2)
cv2.waitKey()
cv2.destroyAllWindows()


运行之后,得到的效果如下图所示:


可以看到,Canny边缘检测获取到的图像信息与抖音酷炫的人物轮廓分离实现的效果几乎一样。没错,其实抖音那种酷炫的人物轮廓分离特效,就可以使用Canny边缘检测实现。

相关文章
|
5月前
|
数据采集 存储 XML
深入浅出:基于Python的网络数据爬虫开发指南
【2月更文挑战第23天】 在数字时代,数据已成为新的石油。企业和个人都寻求通过各种手段获取互联网上的宝贵信息。本文将深入探讨网络爬虫的构建与优化,一种自动化工具,用于从网页上抓取并提取大量数据。我们将重点介绍Python语言中的相关库和技术,以及如何高效、合法地收集网络数据。文章不仅为初学者提供入门指导,也为有经验的开发者提供进阶技巧,确保读者能够在遵守网络伦理和法规的前提下,充分利用网络数据资源。
|
5月前
|
算法 计算机视觉
OpenCV(二十六):边缘检测(二)
OpenCV(二十六):边缘检测(二)
50 0
|
5月前
|
计算机视觉
OpenCV(二十五):边缘检测(一)
OpenCV(二十五):边缘检测(一)
118 0
|
5月前
|
算法 计算机视觉 Python
OpenCV中Canny边缘检测和霍夫变换的讲解与实战应用(附Python源码)
OpenCV中Canny边缘检测和霍夫变换的讲解与实战应用(附Python源码)
347 0
|
2月前
|
机器学习/深度学习 XML 搜索推荐
图像自动化保存工具:Python脚本开发指南
图像自动化保存工具:Python脚本开发指南
|
4月前
|
算法 计算机视觉
【Qt&OpenCV 图像边缘检测 Sobel/Laplace/Canny】
【Qt&OpenCV 图像边缘检测 Sobel/Laplace/Canny】
60 0
|
5月前
|
计算机视觉
【OpenCV】-边缘检测汇总示例
【OpenCV】-边缘检测汇总示例
|
5月前
|
算法 计算机视觉
OpenCV高斯差分技术实现图像边缘检测
OpenCV高斯差分技术实现图像边缘检测
|
5月前
|
算法 数据可视化 计算机视觉
使用Python实现图像处理中的边缘检测算法
图像处理中的边缘检测是计算机视觉和图像识别领域的重要技术之一。本文将介绍如何利用Python语言实现常见的边缘检测算法,包括Sobel、Canny等,并结合实例演示其在图像处理中的应用。
198 16
|
5月前
|
算法 数据可视化 计算机视觉
opencv Canny边缘检测(python)
opencv Canny边缘检测(python)