当前位置:   article > 正文

【C++】【Opencv】cv::Canny()边缘检测函数详解和示例_opencv cv::canny

opencv cv::canny

Canny边缘检测是一种流行的边缘检测算法,由John F. Canny在1986年开发。它是一种多阶段过程,包括噪声滤波、计算图像强度的梯度、非最大值抑制以及双阈值检测。本文通过函数原型解读和示例对cv::Canny()函数进行详解,以帮助大家理解和使用。

原理

Canny边缘检测的步骤如下:

(1)高斯滤波(噪声滤波):使用高斯滤波器平滑图像以减少噪声。高斯滤波器是一种线性滤波器,可以消除图像中的高频噪声。
(2)计算梯度强度和方向:计算图像中每个像素的梯度强度和方向。梯度强度表示像素点处的边缘强度,而梯度方向表示边缘的方向。
(3)非最大值抑制:在计算梯度强度和方向后,非最大值抑制将抑制那些不是局部最大值的像素点。这意味着只有局部最大值的像素点才会被保留下来。
(4)双阈值检测:最后,双阈值检测用于检测边缘。这需要两个阈值,通常称为低阈值和高阈值。如果像素的梯度强度大于高阈值,则该像素被视为边缘;如果像素的梯度强度在两个阈值之间,则该像素被视为边缘候选;如果像素的梯度强度低于低阈值,则该像素被视为非边缘。

函数介绍

void cv::Canny(InputArray image, OutputArray edges, double lowThreshold, double highThreshold, int apertureSize = 3);

参数解释:

image:输入图像,应该是灰度图像。
edges:输出图像,即检测到的边缘图像。
lowThreshold:低阈值,用于双阈值检测。
highThreshold:高阈值,用于双阈值检测。
apertureSize:指定Sobel算子的大小,默认为3。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

运行示例

设置阈值分别为50和150。
代码如下:

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main() {
    Mat image = imread("ceshi.jpg", IMREAD_COLOR); // 读取输入图像
    if (image.empty()) {
        cout << "Failed to read image." << endl;
        return -1;
    }
    Mat gray_image; cvtColor(image, gray_image, COLOR_BGR2GRAY); // 转换为灰度图像
    Mat edges_image;

    // 应用Canny边缘检测算法
    Canny(gray_image, edges_image, 50, 150);

    // 显示结果图像
    imshow("Input", image);
    imshow("Edges", edges_image);
    imwrite("cnany.jpg", edges_image);
    waitKey(0);
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

在上面的示例中,我们首先读取输入图像并将其转换为灰度图像。然后,我们使用Canny函数应用Canny边缘检测算法,并指定两个阈值(低阈值和高阈值)。最后,我们显示原始图像和检测到的边缘图像。图像对比如下所示。

在这里插入图片描述
上面为原图,下面为边缘检测效果图。
在这里插入图片描述

小结

选择使用Canny函数进行边缘计算时,应根据项目需求和场景,设置合适的低阈值和高阈值参数,以获得最佳的边缘检测结果。较低的阈值可能会导致更多的边缘被检测到,而较高的阈值可能会导致较少的边缘被检测到。因此,选择适当的阈值是使用Canny边缘检测函数的关键之一。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/173469
推荐阅读
相关标签
  

闽ICP备14008679号