在我的项目中,我需要检测图像中的线条。我实际上必须检测矩形内的行和列。我使用OpenCV完成此任务。我已经成功完成了,但是有点慢。我使用许多功能来预处理图像-例如阈值, Canny ,膨胀,高斯模糊等。

我像这样使用HoughLines

Imgproc.HoughLines(image, lines, 1, Math.PI/90 , threshold, minLineSize, maxGap);

完成约600行的程序大约需要2.5 s。但是在这一行上需要2.2 s。如您所见,我将Java接口(interface)用于OpenCV。是否有可能对其进行优化?将程序重写为NDK可以使其速度更快吗?如果我了解OpenCV4Android,那么它只是NDK编写的函数的包装,因此我认为它不会更快。还是有更好,更快的方法来检测图像中的线条?感谢您的任何建议。

最佳答案

您能计算从HoughLines返回的行数吗?如果有1000,那么很可能会花费这种时间。

我建议您更改Canny设置,以减少HoughLines需要处理的边缘数量。

另外,您可以为HoughLines尝试不同的参数。我分别为HoughLines调用的值分别为80、30和10,这似乎可以提供可管理的结果。

09-26 20:11