我已将我的 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 代码相同的角度来看,它返回了 100 行具有相同阈值和其他值的行,这段代码返回了一个。
我试过调整所有参数,但没有成功。 Canny 返回的 Mat 显示合理的边缘,但 HoughLines(标准的和概率的)将始终只返回一条线。
我错过了什么?
最佳答案
Java 包装器中的行和列是不同的。而不是 .cols 使用 .rows 当你想获取数据而不是 lines.get(0, i) 使用 lines.get(i, 0)
关于java - OpenCV HoughLines 只返回一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29872439/