Java 查找最近位置时出现opencv致命信号11

Java 查找最近位置时出现opencv致命信号11,java,android,opencv,Java,Android,Opencv,我正在用opencv开发一个Android应用程序 我使用以下代码查找最近的CvKNearest列车 for(int i=0; i< contours.size();i++){ if ((Imgproc.contourArea(contours.get(i)) > 50 )){ Rect rect = Imgproc.boundingRect(contours.get(i)); if (rect.height > 28){ Mat ROI = imageA.

我正在用opencv开发一个Android应用程序

我使用以下代码查找最近的CvKNearest列车

for(int i=0; i< contours.size();i++){
 if ((Imgproc.contourArea(contours.get(i)) > 50 )){
  Rect rect = Imgproc.boundingRect(contours.get(i));
   if (rect.height > 28){
    Mat ROI = imageA.submat(rect.y, rect.y + rect.height, rect.x, rect.x + rect.width);
    Mat tmp1 = new Mat();
    Mat tmp2 = new Mat();
    Mat tmp3 = new Mat(CvType.CV_32FC1);

    Imgproc.resize(ROI, tmp1, new Size(10, 10));
    tmp1.convertTo(tmp2, CvType.CV_32FC1);

    //float p = knn.find_nearest(tmp2.reshape(1, 1), 100, tmp3, temp1, temp1);

    Core.rectangle(image, new Point(rect.x,rect.y), new Point(rect.x+rect.width,rect.y+rect.height),new Scalar(0,0,255));

   }
 }
}
for(int i=0;i50)){
Rect Rect=Imgproc.boundingRect(contours.get(i));
如果(垂直高度>28){
Mat ROI=imageA.SUBSMAT(矩形y、矩形y+矩形高度、矩形x、矩形x+矩形宽度);
Mat tmp1=新Mat();
Mat tmp2=新Mat();
材料tmp3=新材料(CvType.CV_32FC1);
调整大小(ROI,tmp1,新大小(10,10));
tmp1.convertTo(tmp2,CvType.CV_32FC1);
//float p=knn.find_nearest(tmp2.重塑(1,1),100,tmp3,temp1,temp1);
矩形(图像,新点(矩形x,矩形y),新点(矩形x+矩形宽度,矩形y+矩形高度),新标量(0,0255));
}
}
}
当我取消注释knn.find_时,我收到最近的一行
0x00000010(code=1)处的致命信号11(SIGSEGV)

我错在哪里

什么时候我必须清空内存???

在函数“find knearest”中,您必须检查k参数,因为这有一个限制

这里有一个链接,您可以在其中找到信息

我现在在一个类似的项目中,我设置了32而不是100