I want to extract all children of a contour, but I only got one.Here's the final result(the right pic):
As you can see, I only got one (innerRect), but I expected to get all three of them. Here's the code:
 findContours(midImage2, contours2, hierarchy2, RETR_TREE, CHAIN_APPROX_SIMPLE);
        for (int i = 0; i < contours2.size(); i++) {
            double areaSize = contourArea(contours2[i]);
            int rect_count;
            Point2f innerRectcornerPoints[4], largeRectCornerPoints[4];
            RotatedRect innerRect, largeRect;
            if (areaSize > 3000) {
                largeRect = minAreaRect(contours2[i]);
                largeRect.points(largeRectCornerPoints);
                for (int j = 0; j < 4; j++) {
                    line(frame, largeRectCornerPoints[j], largeRectCornerPoints[(j + 1) % 4], Scalar(255, 255, 0), 3, 8);
                }
                putText(frame, "largeRect", largeRectCornerPoints[1], 2, 1,  Scalar(255, 255, 0));
                for (int j = 0; j <= i; j++) {
                    if (hierarchy2[j][2] != -1) {
                        innerRect = minAreaRect(contours2[hierarchy2[i][2]]);
                        innerRect.points(innerRectcornerPoints);
                        rect_count++;
                    }
                }
                //if (rect_count < 4) {
                    for (int j = 0; j < 4; j++) {
                        line(frame, innerRectcornerPoints[j], innerRectcornerPoints[(j + 1) % 4], Scalar(0, 255, 255), 3, 8);
                    }
                    putText(frame, "innerRect", innerRectcornerPoints[2], 2, 1, Scalar(0, 255, 255));
                //}
            }
        }
I've been stuck there for almost a day, hope you can help me out.
 
Aucun commentaire:
Enregistrer un commentaire