2013-12-12 74 views
0

在我的项目中我需要检测图像中的行。我实际上必须检测矩形内的行和列。我使用OpenCV来实现这一点。我已经成功完成了它,但它有点慢。我使用许多函数来预处理图像 - 例如阈值,精明的,扩张,高斯模糊等Android OpenCV优化 - 行检测速度缓慢Hough Lines

我用HoughLines这样

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

大约需要2.5秒即可完成我的计划,有〜600线。但是在这一行中,它需要2.2秒。正如你所看到的,我使用OpenCV的Java接口。有可能对其进行优化吗?将我的程序改写为NDK会让它更快吗?如果我理解OpenCV4Android,那只是用NDK编写的函数的包装,所以我不认为它会更快。还是有更好更快的方法来检测图像中的线条?感谢您的任何建议。

+0

对您的代码进行配置文件(如果您尚未提供),并在调用HoughLines之前提供有关您的操作的更多详细信息。如果花费2.5s,你做错了什么,你应该在尝试去NDK路径之前解决这个问题。例如,也许你应该在进行任何处理之前先缩放图像,确保你不需要8Megapix的图像来检测线条。 –

回答

1

你能计算HoughLines返回的行数 - 如果有1000个,那么它可能需要这样的时间来生成。

我建议改变你的Canny设置,以尽可能减少HoughLines需要处理的边缘数量。

此外,您可以尝试HoughLines的不同参数。我对HoughLines的调用分别为80,30和10的值似乎给出了可管理的结果。