OpenCV 中如何使用 Canny 算子?

推荐答案

-- -------------------- ---- -------
------ ---

- ----
----- - ----------------------- ---------------------

- ---------------
----- - ---------------- --------------- ---------------

- ----
----------------- ------- ------
--------------
-----------------------

本题详细解读

Canny算子简介

Canny边缘检测是一种多阶段的算法,用于检测图像中的边缘。它由John F. Canny在1986年提出,被认为是边缘检测的黄金标准。Canny算子的主要步骤包括:

  1. 噪声去除:使用高斯滤波器平滑图像以减少噪声。
  2. 梯度计算:使用Sobel算子计算图像的梯度幅值和方向。
  3. 非极大值抑制:沿着梯度方向保留局部最大值,抑制其他非极大值点。
  4. 双阈值检测:使用两个阈值(低阈值和高阈值)来确定真正的边缘和潜在的边缘。
  5. 边缘跟踪:通过滞后阈值处理,保留强边缘并连接弱边缘。

参数解释

  • image:输入的灰度图像。
  • threshold1:第一个阈值,用于边缘检测的低阈值。
  • threshold2:第二个阈值,用于边缘检测的高阈值。

代码解析

  1. 读取图像:使用cv2.imread()函数读取图像,并将其转换为灰度图像。
  2. Canny边缘检测:调用cv2.Canny()函数,传入图像和两个阈值参数,进行边缘检测。
  3. 显示结果:使用cv2.imshow()函数显示检测到的边缘图像,并通过cv2.waitKey()cv2.destroyAllWindows()函数控制窗口的显示和关闭。

注意事项

  • 选择合适的阈值对Canny边缘检测的效果至关重要。通常,threshold1threshold2的比例为1:2或1:3。
  • Canny算子对噪声敏感,因此在应用Canny算子之前,通常需要对图像进行高斯模糊处理。
纠错
反馈