Canny 边缘检测算法是一种非常流行的边缘检测算法,它由 John F. Canny 在 1986 年提出。
Canny算法是一种用于图像处理的边缘检测算法,它的主要目的是从图像中找出物体的轮廓(边缘)。我们可以用一个简单的比喻来理解它:想象你有一张照片,Canny算法就像是一个“智能画笔”,它能自动帮你勾勒出照片中物体的轮廓,比如桌子的边、人的轮廓、窗户的框架等等。下面我会用通俗易懂的方式解释它的主要步骤:
Canny算法就像一个智能的“画师”,它通过平滑图像、找变化、选最强的边缘、筛选边缘和连接边缘这几个步骤,最终勾勒出图像中物体的轮廓。它被广泛用于计算机视觉领域,比如自动驾驶(检测道路边缘)、医学图像处理(勾勒器官轮廓)等。
代码实现:
import cv2
import numpy as np
# 读取图像
image = cv2.imread('./images/jpg/small_bird01.jpg')
# 将图像转换为灰度图
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 应用 Canny 边缘检测
edges = cv2.Canny(gray_image, threshold1=50, threshold2=150)
# 显示原图和边缘图
cv2.imshow('Original Image', image)
cv2.imshow('Edge Image', edges)
# 等待按键后关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()


因此,选择哪种方法取决于具体的应用需求。如果需要快速处理且对噪声不敏感,Sobel算子是不错的选择;如果需要高精度和抗噪能力,则Canny算法更适合。