使用openCV java

时间:2017-06-05 10:54:33

标签: java android opencv

已经使用 HoughLinesP 来检测图像中的线条,但问题是它只检测直线,干净的线条而错过了休息

这是代码

int threshold = 80;
double minLineSize = 100;
double lineGap = 10;
double theta=Math.PI / 180;

Imgproc.HoughLinesP(edges, lines, 1, theta, threshold, minLineSize, lineGap);

当它应用于下图时

https://i.stack.imgur.com/2HFFY.png

确定的线条可以在下面看到

https://i.stack.imgur.com/loc4k.png

正如您所见,我想要检测的实际行(文档边界)被跳过。

我遵循的步骤

  • 已更改为灰度
  • 应用canny边缘检测
  • findContour
  • 如果找不到具有适当面积的轮廓,则试图找到大线条和手动构建边界
  • 我面临的问题是houghlinesP没有检测到必需的行,因此我无法设计我的文档边界

请建议任何其他方法来检测线路,因为我将使用此代码作为通用代码,我将无法修改阈值&我配置后的其他值。

我还在stackoverflow中提到了许多其他类似的问题,但大多数建议使用HoughLines但使用不同的参数值。

我发现的一个问题与我的问题相似,但没有答案。

Detecting incomplete rectangles (missing corners/ short endges) in OpenCV

暗白线是通过HoughLinesP方法检测的线

还可以在下面找到错误检测线条的其他样本图像

https://i.stack.imgur.com/fWjti.png

https://i.stack.imgur.com/1vaut.png

https://i.stack.imgur.com/KXosQ.png

0 个答案:

没有答案