返回顶部
首页 > 资讯 > 后端开发 > Python >Python中怎么实现Opencv cv2.Canny()边缘检测
  • 373
分享到

Python中怎么实现Opencv cv2.Canny()边缘检测

2023-06-20 14:06:34 373人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

这期内容当中小编将会给大家带来有关python中怎么实现OpenCV cv2.Canny()边缘检测,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1. 效果图原始图 VS Canny检测效果图如下:2.

这期内容当中小编将会给大家带来有关python中怎么实现OpenCV cv2.Canny()边缘检测,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。


1. 效果图

原始图 VS Canny检测效果图如下:

Python中怎么实现Opencv cv2.Canny()边缘检测

2. 源码

# Canny边缘检测是一种流行的边缘检测算法。它是由约翰F开发的,是一个多阶段的算法;# Canny边缘检测大致包含4个步骤:# # 1.降噪(使用高斯滤波去除高频噪声);# 2. 计算边缘梯度和方向(SobelX、SobleY核在水平方向和垂直方向对平滑后的图像进行滤波,找到每个像素的边缘梯度和方向);# 3. 非最大抑制(在得到梯度大小和方向后,对图像进行全扫描,去除任何不需要的像素,这些像素可能不构成边缘。检查像素是否在其梯度方向的邻域中是局部最大值。否则,将被抑制(归零)。简而言之,得到的结果是一个具有“细边”的二值图像。# 4. 滞后阈值(决定哪些边是真正的边,哪些不是。为此需要两个阈值minVal和maxVal,任何强度梯度大于maxVal的边都肯定是边,小于minVal的边肯定是非边,因此丢弃。位于这两个阈值之间的边根据其连通性被分类为边或非边。如果它们连接到“确定边缘”像素,则它们被视为边缘的一部分。否则,它们也会被丢弃。)# # 选择滞后阈值minVal和maxVal是得到正确结果的关键。import cv2from matplotlib import pyplot as pltimg = cv2.imread('zly.jpg', 0)edges = cv2.Canny(img, 80, 200)plt.subplot(121), plt.imshow(img, cmap='gray')plt.title('Original Image'), plt.xticks([]), plt.yticks([])plt.subplot(122), plt.imshow(edges, cmap='gray')plt.title('Edge Image'), plt.xticks([]), plt.yticks([])plt.show()

参考 https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_imgproc/py_canny/py_canny.html#canny

补充:OpenCV-Python 中 Canny() 参数

步骤:

  • 彩色图像转换为灰度图像(以灰度图或者单通道图读入)

  • 对图像进行高斯模糊(去噪)

  • 计算图像梯度,根据梯度计算图像边缘幅值与角度

  • 沿梯度方向进行非极大值抑制(边缘细化)

  • 双阈值边缘连接处理

  • 二值化图像输出结果

"""cv2.Canny(image,            # 输入原图(必须为单通道图)          threshold1,           threshold2,       # 较大的阈值2用于检测图像中明显的边缘          [, edges[,           apertureSize[,    # apertureSize:Sobel算子的大小          L2gradient ]]])   # 参数(布尔值):                              true: 使用更精确的L2范数进行计算(即两个方向的倒数的平方和再开放),                              false:使用L1范数(直接将两个方向导数的绝对值相加)。"""import cv2import numpy as np   original_img = cv2.imread("qingwen.png", 0)# canny(): 边缘检测img1 = cv2.GaussianBlur(original_img,(3,3),0)canny = cv2.Canny(img1, 50, 150)# 形态学:边缘检测_,Thr_img = cv2.threshold(original_img,210,255,cv2.THRESH_BINARY)#设定红色通道阈值210(阈值影响梯度运算效果)kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))         #定义矩形结构元素gradient = cv2.morphologyEx(Thr_img, cv2.MORPH_GRADIENT, kernel) #梯度cv2.imshow("original_img", original_img) cv2.imshow("gradient", gradient) cv2.imshow('Canny', canny)cv2.waiTKEy(0)cv2.destroyAllwindows()

 Python中怎么实现Opencv cv2.Canny()边缘检测

可调整阈值大小的程序

import cv2import numpy as np def CannyThreshold(lowThreshold):    detected_edges = cv2.GaussianBlur(gray,(3,3),0)    detected_edges = cv2.Canny(detected_edges,                               lowThreshold,                               lowThreshold*ratio,                               apertureSize = kernel_size)    dst = cv2.bitwise_and(img,img,mask = detected_edges)  # just add some colours to edges from original image.    cv2.imshow('canny demo',dst)lowThreshold = 0max_lowThreshold = 100ratio = 3kernel_size = 3 img = cv2.imread('qingwen.png')gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) cv2.namedWindow('canny demo') cv2.createTrackbar('Min threshold','canny demo',lowThreshold, max_lowThreshold, CannyThreshold) CannyThreshold(0)  # initializationif cv2.waitKey(0) == 27:    cv2.destroyAllWindows()

Python中怎么实现Opencv cv2.Canny()边缘检测 

上述就是小编为大家分享的Python中怎么实现Opencv cv2.Canny()边缘检测了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网Python频道。

--结束END--

本文标题: Python中怎么实现Opencv cv2.Canny()边缘检测

本文链接: https://lsjlt.com/news/297806.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python实现Opencv cv2.Canny()边缘检测
    目录1. 效果图2. 源码补充:OpenCV-Python 中 Canny() 参数这篇博客将介绍Canny边缘检测的概念,并利用cv2.Canny()实现边缘检测; Ca...
    99+
    2024-04-02
  • Python中怎么实现Opencv cv2.Canny()边缘检测
    这期内容当中小编将会给大家带来有关Python中怎么实现Opencv cv2.Canny()边缘检测,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1. 效果图原始图 VS Canny检测效果图如下:2. ...
    99+
    2023-06-20
  • opencv 边缘检测 cv2.Canny()详解
    👨‍💻个人简介: 深度学习图像领域工作者 🎉总结链接:              链接中主要是个人工作的总结,每个链接都是一些常用demo,代码直...
    99+
    2023-09-03
    opencv 计算机视觉 python
  • python中opencv Canny边缘检测
    目录Canny边缘检测Canny边缘检测基础高斯滤波去除图像噪声计算梯度非极大值抑制应用双阈值确定边缘Canny函数及使用Canny边缘检测 Canny边缘检测是一种使用多级边缘检测...
    99+
    2024-04-02
  • OpenCV中Canny边缘检测的实现
    目录1. Canny 边缘检测理论1.1、高斯滤波1.2、Sobel算子计算梯度和方向1.3、非极大值抑制(定位准确的边缘同时可缩小边缘线宽)1.4、双阈值检测2. OpenCV 之...
    99+
    2024-04-02
  • 使用OpenCV怎么实现Canny边缘检测
    今天就跟大家聊聊有关使用OpenCV怎么实现Canny边缘检测,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1. Canny 边缘检测理论Canny 是一种常用的边缘检测算法. 其是...
    99+
    2023-06-20
  • Python OpenCV Canny边缘检测算法如何实现
    本文小编为大家详细介绍“Python OpenCV Canny边缘检测算法如何实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python OpenCV Canny边缘检测算法如何实现”文章能帮助...
    99+
    2023-07-02
  • opencv canny边缘检测算法详解
    目录一、边缘检测原理二、 canny算法原理三、opencv 函数支持Canny()四、代码示例:一、边缘检测原理 图像的边缘由图像中两个相邻的区域之间的像素集合组成,是指图像中一个...
    99+
    2024-04-02
  • Python OpenCV实现边缘检测
    本文实例为大家分享了Python OpenCV实现边缘检测的具体代码,供大家参考,具体内容如下 1. Sobel 算子检测 Sobel 算子是高斯平滑和微分运算的组合,抗噪能力很强,用途也很多,尤其是效率要求高但对细...
    99+
    2022-06-02
    python OpenCV 边缘检测
  • Python OpenCV Canny边缘检测算法的原理实现详解
    目录Gaussian smoothingComputing the gradient magnitude and orientationNon-maxima suppressionH...
    99+
    2024-04-02
  • Python如何使用cv2.canny进行图像边缘检测
    目录使用cv2.canny进行图像边缘检测阈值对检测结果的影响sobel算子对检测结果的影响范数对检测结果的影响总结使用cv2.canny进行图像边缘检测 CV2提供了提取图像边缘的...
    99+
    2023-01-28
    Python使用cv2.canny cv2.canny图像边缘检测 Python图像
  • Python怎么利用Canny算法检测硬币边缘
    这篇文章给大家分享的是有关Python怎么利用Canny算法检测硬币边缘的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、问题背景纸面上有一枚一元钱的银币,你能在 Canny 和 Hough 的帮助下找到它的坐标...
    99+
    2023-06-28
  • Python+OpenCV实现边缘检测与角点检测详解
    目录一、边缘检测1.1、读取图像1.2、图像转换成灰度图像1.3、Sobel算子1.4、Canny算子1.5、显示正常中文的标签1.6、边缘检测结果二、角点检测2.1、读取图像2.2...
    99+
    2023-02-03
    Python OpenCV边缘检测 Python OpenCV角点检测 Python OpenCV 检测
  • Python利用Canny算法检测硬币边缘
    目录一、问题背景二、Canny 算法(一)、高斯平滑(二)Sobel算子计算梯度(三)非极大化抑制(四)滞后边缘跟踪一、问题背景 纸面上有一枚一元钱的银币,你能在 Canny 和 H...
    99+
    2024-04-02
  • OpenCV实现Sobel边缘检测的示例
    目录一、Sobel算法1、算法概述2、主要函数二、C++代码三、python代码四、结果展示五、相关链接一、Sobel算法 1、算法概述 Sobel边缘检测算法比较简单,实际应用中效...
    99+
    2022-11-13
    OpenCV Sobel边缘检测 OpenCV 边缘检测
  • Python利用OpenCV和skimage实现图像边缘检测
    目录一、简介二、opencv 实践三、skimage 实践一、简介 提取图片的边缘信息是底层数字图像处理的基本任务之一。边缘信息对进一步提取高层语义信息有很大的影响。大部分边缘检测算...
    99+
    2022-12-28
    Python OpenCV 图像边缘检测 Python skimage图像边缘检测 Python图像边缘检测
  • Python+OpenCV图像边缘检测四种实现方法
    目录1.Sobel算子2.Schaar算子(更能体现细节)3.Laplacian算子(基于零穿越的,二阶导数的0值点)4.Canny边缘检测(被认为是最优的边缘检测算法)总结 im...
    99+
    2024-04-02
  • python实现图像边缘检测
    本文实例为大家分享了python实现图像边缘检测的具体代码,供大家参考,具体内容如下 任务描述 背景 边缘检测是数字图像处理领域的一个常用技术,被广泛应用于图像特征提取、目标识别、计...
    99+
    2024-04-02
  • 怎么利用Python+OpenCV实现简易图像边缘轮廓检测
    本篇内容主要讲解“怎么利用Python+OpenCV实现简易图像边缘轮廓检测”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么利用Python+OpenCV实现简易图像边缘轮廓检测”吧!函数基础...
    99+
    2023-06-30
  • python opencv检测直线 cv2.HoughLinesP的实现
    cv2.HoughLines()函数是在二值图像中查找直线,cv2.HoughLinesP()函数可以查找直线段。 cv2.HoughLinesP()函数原型: HoughLin...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作