【问题标题】:How to do canny edge detection in javacv/opencv?如何在 javacv/opencv 中进行精明的边缘检测?
【发布时间】:2012-10-11 06:28:49
【问题描述】:

我目前正在从事图像处理项目,我需要从图像中检测边缘。我想使用 canny 边缘检测来检测图像的线条,所以我在互联网上使用 javacv 搜索了 canny 边缘检测,我找到了一些教程,这些教程给出了关于 canny 边缘检测技术的基本概念,但我找不到任何示例关于这个的代码。请问有人可以提供简单的示例边缘检测代码吗?

如果您能提供下图的代码示例,我们将不胜感激。

【问题讨论】:

    标签: image-processing opencv javacv edge-detection


    【解决方案1】:

    对于精明的边缘检测,您需要执行如下操作。

    IplImage gray = ...
    
    cvCvtColor(colored, gray, CV_RGB2GRAY); 
    cvSmooth( gray, smooth, CV_BLUR, 9, 9, 2, 2);   
    cvThreshold(gray,gray, 155, 255, CV_THRESH_BINARY);
    
    cvCanny( gray, gray, lowThreshold, highThreshold, aperature_size );  
    

    Check this Question and Answer for more detail

    【讨论】:

    • 你能告诉我低阈值和高阈值是什么意思吗?那些需要单独计算吗?
    • 是的,你应该使用图像的直方图来计算它们。在现实世界的场景中,背景可能非常接近图像的主要部分(我假设你正在从完整图像中提取一些东西)或与此非常不同。因此,如果您手动确定值,则很可能会得到不好的结果。有时您不会检测到任何边缘,而有些您的实现会检测到很多可能的边缘,这将使您无法选择/识别正在寻找的部件。
    猜你喜欢
    • 2017-06-13
    • 2018-12-06
    • 1970-01-01
    • 1970-01-01
    • 2012-09-17
    • 1970-01-01
    • 1970-01-01
    • 2012-10-17
    • 2018-12-12
    相关资源
    最近更新 更多