gpt4 book ai didi

python - cv2.Canny() 是否执行高斯模糊?

转载 作者:行者123 更新时间:2023-12-02 16:58:47 26 4
gpt4 key购买 nike

我知道在使用 Canny 检测边缘之前对图像应用高斯模糊非常重要。我的问题是: cv2.Canny() 自己做高斯模糊还是有必要在 cv2.Canny() 之前应用 cv2.GaussianBlur() ?文档在这一点上并不清楚。

最佳答案

回想一下,在 Python 中使用 OpenCV 实际上是 OpenCV 的 C++ 接口(interface)的包装器。 Canny 边缘检测算法在 C++ 中的实现文件可以在这里找到:https://github.com/opencv/opencv/blob/master/modules/imgproc/src/canny.cpp

如果您检查此来源,您会发现图像上没有进行任何模糊处理。然而,由于 Yves Daoust 的修正(见下文),Sobel 边缘检测算法被用于寻找梯度。有一个 aperture 输入参数指定 Sobel 内核的大小。使用默认值意味着您使用的是 3 x 3 内核并且没有应用模糊。但是,任何高于 3 x 3 的东西都将使用高斯核。因此,如果您想使用默认的 Sobel 内核,您需要自己应用模糊。如果您改变 Sobel 内核的大小,您不必自己执行模糊操作。

事实上,在他们演示 Canny 使用的官方 OpenCV 教程中,图像在检测之前被手动模糊:https://docs.opencv.org/3.4/da/d5c/tutorial_canny_detector.html .但是,由于您使用的是 3 x 3 Sobel 内核,因此他们在算法之前使用了 3 x 3 框过滤器。

tl;dr - 如果您决定使用默认孔径/Sobel 内核大小,则需要在使用 Canny 边缘检测算法之前自行模糊图像。如果大于 3,则不必模糊图像。

关于python - cv2.Canny() 是否执行高斯模糊?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63543033/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com