【发布时间】:2012-09-22 22:44:59
【问题描述】:
根据我的研究,Canny Edge Detector 对于检测图像的边缘非常有用。经过我的努力,我发现OpenCV函数可以做到这一点,这是
Imgproc.Canny(Mat image, Mat edges, double threshold1, double threshold2)
但是对于低阈值和高阈值,我知道不同的图像有不同的阈值,请问有没有快速自适应阈值的方法可以根据不同的图像自动分配低阈值和高阈值?
【问题讨论】:
-
Rui Marques,你能帮帮我吗?提前谢谢。
-
您应该查看 OpenCV 的代码源,它们在阈值方法内部使用来自 Otsu 的自适应阈值计算。您可以使用它来获得 canny 的高阈值并将其乘以 0.4 0.5 以获得低阈值。
-
Adrian Popovici,你的意思是这样的:Imgproc.Canny(image, image, 0.4*Imgproc.THRESH_OTSU, Imgproc.THRESH_OTSU)?但是现在图像结果非常模糊。对不起,因为我是 OpenCV 的新手我已经尽力研究了。希望你能帮助我。谢谢。
-
我不知道在 Java 中如何获得 Otsu 阈值,但您应该有这样的方法:返回整数的 getOtsuThreshold(image)。然后你就像这样 Canny(srcImage, dstImage, 0.4 * thresh, thresh) 应用它。请记住,目标图像与源图像不同。
-
嗨,我看到你在 cmets 中写了我的名字,但你必须在名字前写 @ 才能收到通知。
标签: java android image-processing opencv image-recognition