当前位置: 首页 > article >正文

Canny算子详解及例程

Canny算子是一种经典的边缘检测算法,于1986年由John Canny提出。相比其他边缘检测算法,Canny算子具有以下特点:

  1. 高准确性:Canny算子能够对图像中真实边缘进行准确检测,并尽量排除非边缘部分的干扰。

  2. 低错误率:Canny算子在边缘检测过程中,能够尽量减少错误的边缘检测,即将噪声和细节等误判为边缘的情况。

  3. 单一响应:对于明显的边缘,Canny算子能够产生单一像素宽度的边缘响应。

Canny算子的步骤如下:

  1. 噪声抑制:利用高斯滤波器对输入图像进行平滑处理,以减少图像中的噪声。

  2. 梯度计算:通过对平滑后的图像应用Sobel(或Prewitt)算子,计算每个像素点的梯度幅值和方向。

  3. 非极大值抑制:在梯度图像上,对每个像素点在其梯度方向上进行比较,并保留局部最大值点,抑制非边缘像素。

  4. 双阈值检测:根据设定的高阈值和低阈值,将梯度图像中的像素点分为强边缘、弱边缘和非边缘三个部分。

  5. 边缘连接:通过连接强边缘像素和与之相连的弱边缘像素,形成完整的边缘。

下面是一个使用OpenCV库实现Canny算子的简单例程:

import cv2

# 读取输入图像
image = cv2.imread("input.jpg", cv2.IMREAD_GRAYSCALE)

# 使用Canny算子进行边缘检测
edges = cv2.Canny(image, 100, 200)

# 显示结果
cv2.imshow("Input Image", image)
cv2.imshow("Canny Edges", edges)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这个例程中,首先使用cv2.imread()函数读取输入图像,并将其转换为灰度图像。

然后,我们使用cv2.Canny()函数对灰度图像进行Canny边缘检测。函数的参数包括输入图像、高阈值和低阈值。这两个阈值用于控制边缘的强度,一般建议高阈值为低阈值的两倍到三倍。

最后,使用cv2.imshow()函数显示原始图像和Canny边缘检测结果。使用cv2.waitKey(0)等待用户按下任意按键后关闭窗口并结束程序。

请确保将代码中的"input.jpg"替换为您要进行边缘检测的实际图像的路径。此外,确保已安装OpenCV库并正确配置Python环境。


http://www.kler.cn/a/104564.html

相关文章:

  • [计算机提升] 命令、批处理介绍
  • 成员变量、静态成员变量、局部变量、常量的内存区域
  • 浙大陈越何钦铭数据结构06-图1 列出连通集
  • Wt库的C++下载器程序
  • ITSS信息技术服务运行维护标准符合性证书申请详解及流程
  • 开放式激光振镜运动控制器在动力电池模组连接片的焊接应用
  • 【Linux】gdb调试
  • 压缩Ubuntu虚拟机大小
  • HarmonyOS 快速入门TypeScript
  • 德语中第二虚拟式在主动态的形式,柯桥哪里可以学德语
  • 云服务器搭建Hadoop分布式
  • 16、window11+visual studio 2022+cuda+ffmpeg进行拉流和解码(RTX3050)
  • Windows下Eclipse C/C++开发环境配置教程
  • FLStudio2024最新破解版注册机
  • logback.xml配置详解
  • 51单片机实现换能器超声波测水深
  • Tomcat调试端口被占用解决办法
  • 对电磁兼容(EMC)的故障分析和判断方法简述
  • C#演示单例模式
  • Spring Boot和XXL-Job:高效定时任务管理