卡边缘检测OpenCV

时间:2014-03-18 03:54:06

标签: c++ opencv

我已经按照OpenCV网站上的Canny Edge Detector教程进行了测试,结果很糟糕,并且对它的工作原理感到很困惑。我用它来检测名片上的边缘,然后根据结果进行裁剪。

我正在使用这个代码,它给了我一个带有几个白色像素的全黑图像。代码基于文档。

void cannyThreshold(Mat& src_gray, Mat& dst)
{
    blur(src_gray, src_gray, cv::Size(3,3));
    Canny(src_gray, src_gray, 900, 890, 3);
    dst = Scalar::all(0);
    src_gray.copyTo(dst, src_gray);
}

有人能指出我正确的方向来检测卡的边缘吗?

2 个答案:

答案 0 :(得分:0)

void Canny( InputArray image, OutputArray edges,
                         double threshold1, double threshold2,
                         int apertureSize=3, bool L2gradient=false );

您需要找到threshold1和threshold2的最佳值才能获得更好的结果。看HERE

答案 1 :(得分:0)

您的阈值太高。因此,而不是Canny(src_gray, src_gray, 900, 890, 3);尝试使用以下

Canny(src_gray, src_gray, 20, 60, 3);

尝试使用不同的阈值组合。