Почему мой дефект выпуклости OpenCV в Android получает ошибку?
Я новичок в разработке android и новичок в OpenCV тоже. У меня есть проект о распознавании жестов рук в Android. Я хочу сделать на нем дефект выпуклости. Прежде чем я сделаю дефект выпуклости, я должен был найти контур и выпуклую оболочку. Я их уже сделал. Теперь я делаю дефект выпуклости, чтобы получить дефект кисти и пальцев. Но тут что-то не так. Когда я строю свой код с дефектом выпуклости в моем Андроиде, он, к сожалению, останавливается. Я не знаю, является ли моя функция дефекта выпуклости неправильной, или то, как я получаю значение дефекта (MatOfInt4) в точку, неверно. Кто-нибудь, пожалуйста, помогите мне. Спасибо. Это мой код :
List<MatOfInt> hull = new ArrayList<MatOfInt>(); List<MatOfInt4> defect = new ArrayList<MatOfInt4>(); for(int i = 0; i < newContours.size(); i++) { hull.add(new MatOfInt()); Imgproc.convexHull(newContours.get(i), hull.get(i)); Imgproc.convexityDefects(newContours.get(i), hull.get(i), defect.get(i)); } Point defectSP= new Point(); Point defectEP= new Point(); Point defectFP= new Point(); for(int i = 0; i < defect.size(); i++) { Point[] startP = new Point[newContours.get(i).rows()]; Point[] endP = new Point[newContours.get(i).rows()]; Point[] farP = new Point[newContours.get(i).rows()]; Point[] depthP = new Point[newContours.get(i).rows()]; for(int j = 0; j < defect.get(i).rows(); j++) { int distP = (int) defect.get(i).get(j, 3)[3]; if (distP > 20*256) { startId = (int) defect.get(i).get(j, 0)[0]; endId = (int) defect.get(i).get(j, 1)[1]; farId = (int) defect.get(i).get(j, 2)[2]; defectSP.x = startId; defectSP.y = startId; defectEP.x = endId; defectEP.y = endId; defectFP.x = farId; defectFP.y = farId; } } }