OpenCV HoughLines 只返回一条线路

10

我已经将我的OpenCV开发从Python转移到Java,以便在Android设备上使用它。第一步是移植一个相当简单的Canny/HoughLines算法。通过一些研究,我最终得到了:

    Mat lines = inputFrame.gray();

    Mat cny=new Mat();

    Imgproc.Canny(lines,cny,100,150);

    Mat lns = new Mat();

    Imgproc.HoughLinesP(cny, lns, 1, Math.PI/180, 50, 20, 20);
    Log.w("MainActivity",String.valueOf(lns.cols()));


    return cny;

这段代码的问题在于它总是打印出'1'或'0'行。从我Python代码的角度来看,它返回了数百行相同阈值和其他值,而这段代码只返回了一行。

我尝试调整所有参数,但没有成功。从Canny返回的Mat显示出合理的边缘,但HoughLines(标准和概率)始终只返回一条线。

我错过了什么?


你能添加图片吗?原始图像,Canny算法,检测到的线。 - Micka
你能同时打印行数吗?在C++中,返回类型通常是vec4b元素的向量(数组),而不是mat(虽然也可能)。 - Micka
我也遇到了同样的问题,有什么进展吗? - Niroshan
1个回答

37

在Java包装器中,行和列是不同的。使用.rows而不是.cols,当你想获取数据时,不要使用lines.get(0, i),而是使用lines.get(i, 0)。


谢谢。你有任何想法为什么这没有被记录在任何地方吗? - magmastonealex
1
你救了我的一天。谢谢。 - dasar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接