图像边缘检测(Canny)

Canny检测的流程

Canny检测主要是用于边缘检测

1)使用高斯滤波器,以平滑图像,滤除噪声。

 

2)计算图像中每个像素点的梯度强度和方向。

3)应用非极大值(Non-Maximum Suppression)抑制,以消除边缘检测带来的杂散响应

4)应用双阈值(Double-Threshold)检测来确定真实的和潜在的边缘

5)通过抑制孤立的弱边缘最终完成边缘检测。

注:

NMS(非极大值抑制):

  就是抑制不是极大值的元素,可以理解为局部最大搜索。这个局部代表的是一个邻域,邻域有两个参数可变,一是邻域的维数,二是邻域的大小。

  例如:

    行人检测中,滑动窗口经提取特征,经分类器分类识别后,每个窗口都会得到一个分数。但是滑动窗口会导致很多窗口与其他窗口在包含或者大部分交                                                                                                    

    叉的情况。这时就需要用到NMS来选取那些邻域里分数最高(是行人的概率最大),并且抑制那些分数低的窗口

  算法:

    线性插值法

应用双阈值:大于maxval的设置为边界,

      处于maxval和minval中间 和边界点相连保留,其余舍去,

      小于minval 舍去

1 #cv2.Canny(src,minval,maxval)
2 #minval:最低阈值
3 #maxval:最高阈值
4 #阈值越低,图像越细致
5 canny1 = cv2.Canny(img,80,150)
6 canny2 = cv2.Canny(img,50,100)
7 res = np.hstack((canny1,canny2))
8 Cv_Show('res',res)

 

原文链接:https://www.cnblogs.com/mingrufeng/p/17343817.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:图像边缘检测(Canny) - Python技术站

(0)
上一篇 2023年4月24日
下一篇 2023年4月25日

相关文章

  • python如何修改图像的分辨率

    当我们处理图像时,有时候需要改变图像的分辨率,也就是改变图像的大小。Python中的Pillow库为我们提供了方便的处理图像的方法,下面我们来详细讲解如何使用Python来修改图像的分辨率。 1. 安装Pillow 为了使用Pillow库,我们首先需要安装这个库。可以使用pip命令来安装,运行下面的命令: pip install Pillow 2. 打开图片…

    python 2023年5月18日
    00
  • 解决Pycharm 运行后没有输出的问题

    当Pycharm运行程序后,没有输出任何信息,这可能是由于以下几个原因导致: 程序有错误但未正确处理 当程序中存在错误时,程序会停止执行,导致无法输出任何信息。因此,需要检查程序中是否存在错误,以便进行修复。 首先,在编写代码时,请确保所有语法都是正确的,并且没有打错单词或拼写错误。 然后,建议在程序中增加一些错误处理的代码,比如try-except语句,以…

    python 2023年5月13日
    00
  • python中的不可变数据类型与可变数据类型详解

    Python中的不可变数据类型与可变数据类型详解 Python中的数据类型分为两类:不可变(Immutable)和可变(Mutable)。不可变类型的值在创建后不能修改,当尝试修改时,Python会创建一个新的对象并返回新对象引用,而不是修改原对象。而可变类型的值是可以修改的,原对象的引用不会变。 以下是常见的Python中的不可变数据类型和可变数据类型: …

    python 2023年5月14日
    00
  • 不到40行代码用Python实现一个简单的推荐系统

    不到40行代码用Python实现一个简单的推荐系统 推荐系统是一种常见的人工智能应用,它可以根据用户的历史行为和偏好向用户推荐可能感兴趣的品。本文将介绍如何使用Python实现一个简单的推荐系统,该系统基于用户-物品评分矩阵,使用协同过滤算法进行推荐。 1. 数据集 我们将使用MovieLens数据集来演示如何使用协同过滤算法进行推荐。数据集包含多个用户对多…

    python 2023年5月14日
    00
  • python遍历字符串中每一个字符的4种方式

    当我们需要操作字符串的时候,遍历每一个字符是最基本的操作之一。Python语言提供了多种方式来遍历字符串中的每一个字符,下面将详细讲解这4种方式: 1. 使用下标遍历字符串 使用下标遍历字符串,可以通过字符串的长度和下标的范围来获取每个字符。下面是一个简单的示例: s = "abcdefg" length = len(s) for i i…

    python 2023年6月5日
    00
  • Python设置Word全局样式和文本样式的示例代码

    下面是如何设置Word全局样式和文本样式的详细攻略: 1. 安装python-docx库 首先,需要安装python-docx库,用来在Python中读取、修改和编写Word文档的工具,可以通过以下命令在命令行中安装: pip install python-docx 2. 创建Word文档 在Python中,可以使用python-docx库中的Documen…

    python 2023年6月5日
    00
  • python魔法方法-属性转换和类的表示详解

    首先我们来了解一下什么是Python中的魔法方法。在Python中,魔法方法是以双下划线__作为前缀和后缀的特殊方法。这些方法提供了类的构造、初始化、比较、算术运算等操作的特殊行为。其中就包括本次要讲解的属性转换和类的表示。 一、属性转换 在Python中,我们经常需要对一个对象进行类型转换,比如将字符串类型转换为整数类型、将列表转换为元组类型等。而Pyth…

    python 2023年6月3日
    00
  • Python中导入自定义模块的几种方法总结

    当我们编写 Python 代码时,有时可能需要在一个脚本中引用另外一个脚本中的方法或变量,这时我们就需要将这些方法和变量封装进另一个 Python 模块中,然后再在我们需要使用它们的脚本中通过导入这个模块来使用其中的方法和变量。本文将详细讲解 Python 中导入自定义模块的几种方法。 相对导入: 相对导入是指从当前脚本所在的目录开始,按照包名称和目录结构逐…

    python 2023年6月3日
    00
合作推广
合作推广
分享本页
返回顶部