在应用Canny的边缘检测器之前,我试图找到图像的轮廓。
对于不同的图像,它给出不同的结果。对于一张图像,它在阈值-min-40 max-240处给出完美的轮廓,对于其他图像则在30-120范围内给出轮廓。
我想使其通用。

最佳答案

用外行术语来说,边缘检测需要一个阈值,以告知应将哪些差异/变化算作边缘。有关详细信息,请阅读here

因此,边缘取决于图像的内容,即亮度/暗度/对比度的水平。
我建议您简单地找到整个灰度图像的平均值,并采用以下阈值:

min_threshold = 0.66 *平均值

max_threshold = 1.33 *平均值

我已经对其进行了测试,并且给出了令人印象深刻的结果。您可以使用中位数而不是均值,结果几乎相同。另一种选择是先均衡图像,然后尝试选择/实验的阈值。

但是再次强烈建议尝试均值方法。如有任何疑问,请在此处写。

快乐编码:)

关于opencv - Canny Edge检测器阈值给出不同的结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24862374/

10-11 22:30