我已将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' 0线。从与我的Python代码相同的角度,它返回100个具有相同阈值和其他值的行,此代码返回一个。
我试过调整所有参数,没有运气。 Canny返回的Mat显示合理的边缘,但HoughLines(标准的和概率的)总是只返回一行。
我错过了什么?
答案 0 :(得分:35)
Java包装器中的行和列是不同的。而不是.cols使用.rows,当你想获取数据而不是lines.get(0,i)时,使用lines.get(i,0)