我试图将一些Matlab代码移植到C ++中。 我遇到过这一行:
edges = edge(gray,'canny',0.1);
样本图像的输出是完全黑色的图像。我想使用cv :: Canny重现相同的行为。我应该将什么值用于低阈值和高阈值?
答案 0 :(得分:0)
在上面的一行中,你没有定义一个阈值,可能它需要为零,从而产生黑色图片。此外,你使用0.1的西格玛,这意味着在第一个Canny步骤中几乎没有高斯模糊。在Matlab中,您可以通过以下方式获得优化的威胁:
[~, th] = edge(gray,'canny');
然后应用优化的阈值乘以某个因子f(从我的经验f应该在1-3之间),你必须尝试:
edges=edge(gray,'canny',f*th,'both', sigma);
sigma默认为sqrt(2)(上面使用0.1)。以下是评论: