Android OpenCV优化 - 线路检测是慢线Hough Lines

时间:2013-12-12 20:19:56

标签: android opencv android-ndk hough-transform

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

我使用像这样的HoughLines

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

完成我的程序需要大约2.5秒,这个程序有大约600行。但在这一行上需要2.2秒。如您所见,我使用Java接口进行OpenCV。是否有可能对其进行优化?将我的程序重写为NDK会让它更快吗?如果我理解OpenCV4Android,它只是用NDK编写的函数的包装器,所以我认为它不会更快。或者是否有更好更快的方法来检测图像中的线条?谢谢你的建议。

1 个答案:

答案 0 :(得分:1)

你可以计算从HoughLines返回的行数 - 如果有1000,那么可能需要花费那么多时间来生成。

我建议您更改Canny设置以减少HoughLines在可能的情况下需要处理的边数。

此外,您可以为HoughLines尝试不同的参数。我对HoughLines调用的值分别为80,30和10,似乎可以得到可控的结果。