Por que o OpenCV não possui estrutura de dados especializada para região?

Uso a Halcon Image Processing Library da MVTec há meio ano e o OpenCV há 1 ano.

1. Uma coisa que eu descobri que Halcon supera muito o OpenCV é que o OpenCV não possui estrutura de dados especializada para a região.

Isso é muito desperdício, se eu só quero armazenar uma região pequena em um espaço grande. O OpenCV não deve ter uma estrutura de dados especializada para outra região além da Mat Class.

2. O segundo, que é o resultado do anterior, é que o OpenCV é estranho ao percorrer as regiões.

Imagine o cenário em que tenho 10 blocos de região conectados depois de fazer o limiar e quero percorrer esses 10 blocos para processar cada um deles. Até onde eu sei, primeiro preciso usar o findContours para obter todos os contornos de cada região e depois usar o drawContour para obter essa região. Então, posso dizer que as regiões são armazenadas pelos dados do contorno e cada vez que quero recuperar a região, tenho que chamar drawContours?

Mat myImage = imread("Path_To_Source_Image");
threshold(myImage, region, 128, 1, THRESH_BINARY);
vector<vector<Point>> contours;
findContours(region, contours, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);
for (int i = 0; i < contours.size, i++){
    Mat oneBlock(myImage.size(), CV_8U); 
    drawContours(oneBlock, contours, i, Scalar(255), -1);
        // Now I finally get my region

        //  ***************************************
        //
        //   Do my image procesing for that region
        //
        //  ***************************************
    }

questionAnswers(1)

yourAnswerToTheQuestion