Пожалуйста, помогите мне,Convex Hull на Java Android Opencv 2.3
У меня проблема с выпуклым корпусом на Android. Я использую Java и OpenCV 2.3.
Прежде, чем я сделал это на Java, я сделал это на C++ с Visual Studio 2008.
Этот код может успешно работает на C++.
Теперь я хочу преобразовать его из C++ в Java на Android. И я нашел ошибку, например, «force close», когда я запускаю ее на SDK Android-симуляторе.
Это мой код на C++:
vector<vector<Point> > contours;
vector<Vec4i> hierarchy;
findContours(canny_output, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0));
drawing = Mat::zeros(canny_output.size(), CV_64F);
/// Find the convex hull object for each contour
vector<vector<Point> > hull (contours.size());
for(int i = 0; i < contours.size(); i++)
{ convexHull(Mat(contours[i]), hull[i], false);
}
for(size_t i = 0; i < contours.size(); i++){
drawContours(drawing, hull, i, Scalar(255, 255, 255), CV_FILLED); // FILL WHITE COLOR
}
И это мой код на Android:
Mat hierarchy = new Mat(img_canny.rows(),img_canny.cols(),CvType.CV_8UC1,new Scalar(0));
List<Mat> contours =new ArrayList<Mat>();
List<Mat> hull = new ArrayList<Mat>(contours.size());
drawing = Mat.zeros(img_canny.size(), im_gray);
Imgproc.findContours(img_dilasi, contours, hierarchy,Imgproc.RETR_TREE, Imgproc.CHAIN_APPROX_SIMPLE, new Point(0, 0));
for(int i=0; i<contours.size(); i++){
Imgproc.convexHull(contours.get(i), hull.get(i), false);
}
for(int i=0; i<contours.size(); i++){
Imgproc.drawContours(drawing, hull, i, new Scalar(255.0, 255.0, 255.0), 5);
}
Для вашей информации, я сделал небольшую модификацию на оконтуривающем в моем коде. Я заполняю цвет внутри контура.
Любой может помочь мне решить мою проблему?
Я очень благодарен вам за помощь.
Трудно сказать, что является причиной вашей проблемы. Какова конкретная ошибка, которую вы получаете? Есть ли связанные с ним записи журнала? – Aurelius
Когда я запустил его на SDK Android Simulator, появилась ошибка Windows, «приложение неожиданно остановилось», и мне сказали остановиться, нажав «Force Close». И когда я проверил ошибку Log Cat Eclipse, я обнаружил, что процесс останавливается в этой строке «Imgproc.convexHull (contours.get (i), hull.get (i), false); Я не знаю, почему процесс остановился на этой линии. Разве вы не можете мне объяснить? – Jenang
Я думаю, что допустил ошибку при объявлении переменной «корпус». Но, я не знаю, как решить эту проблему. Я думаю, что я указал эту переменную в соответствии с применимыми положениями. Как насчет вашего мнения? Считаете ли вы, что объявление переменной «корпус» в моем коде неверно? – Jenang