我想找到最大的轮廓但是有异常IndexOutOfBoundsException。 我修改了教程2 Mised处理和相机框架我写了下面的代码 如何解决?
mRgba = inputFrame.gray();
contours = new ArrayList<MatOfPoint>();
mcontours = new ArrayList<MatOfPoint>();
hierarchy = new Mat();
Imgproc.Canny(inputFrame.gray(), mIntermediateMat, 10, 100);
Imgproc.findContours(mIntermediateMat, contours, hierarchy,
Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE);
for (int idx = 1; idx != contours.size(); ++idx) {
Mat contour = contours.get(idx);
double contourarea = Imgproc.contourArea(contour);
if (contourarea > maxArea)
{
maxArea = contourarea;
maxAreaIdx = idx;
}
}
mcontours.add(contours.get(maxAreaIdx));
Imgproc.cvtColor(mIntermediateMat, mRgba, Imgproc.COLOR_GRAY2RGBA,
4);
hierarchy.release();
Imgproc.drawContours(mRgba, mcontours, -1, CONTOUR_COLOR, -1);
答案 0 :(得分:0)
java中的索引从零开始
for (int idx = 0; idx < contours.size(); idx++) {
Mat contour = contours.get(idx);
double contourarea = Imgproc.contourArea(contour);
if (contourarea > maxArea)
{
maxArea = contourarea;
maxAreaIdx = idx;
}
}