AndroidRuntime(17026):java.lang.IndexOutOfBoundsException:索引126无效,大小为103

时间:2014-12-29 05:24:27

标签: android opencv contour

我想找到最大的轮廓但是有异常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);

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;
        }

}