我遵循了OpenCV网站上的Canny边缘检测器的教程,并且得到了不好的结果,并且对它的工作原理非常困惑。我用它来检测名片上的边缘,然后根据结果裁剪。
我正在使用这个代码,它给了我一个全黑的图像与几个白色像素。代码基于文档。
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);
}
有谁能给我指出正确的方向来检测这张牌的边缘吗?
void Canny( InputArray image, OutputArray edges,
double threshold1, double threshold2,
int apertureSize=3, bool L2gradient=false );
您需要为threshold1和threshold2找到最佳值以获得更好的结果。看
阈值太高。因此,尝试使用以下
来代替Canny(src_gray, src_gray, 900, 890, 3);
Canny(src_gray, src_gray, 20, 60, 3);
尝试不同的阈值组合