¿Por qué OpenCV no tiene una estructura de datos especializada para la región?

He estado utilizando la biblioteca de procesamiento de imágenes Halcon de MVTec durante medio año y OpenCV durante 1 año.

1. Una cosa que descubrí que Halcon supera a OpenCV es que OpenCV no tiene una estructura de datos especializada para la región.

Esto es una gran cantidad de desperdicio si solo quiero almacenar una pequeña región en un gran espacio. No debería OpenCV tener alguna estructura de datos especializada para una región que no sea Mat Class.

2. El segundo, que es el resultado del anterior, es que OpenCV es incómodo para recorrer las regiones.

Imagine el escenario de que tengo 10 bloques de región conectados después de hacer el umbral y quiero recorrer esos 10 bloques para procesar cada uno de ellos. Hasta donde sé, primero tengo que usar findContours para obtener todos los contornos de cada región y luego usar drawContour para obtener esa región. Entonces, ¿puedo decir que las regiones están almacenadas por los datos de contorno y cada vez que quiero recuperar la región tengo que llamar a 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
        //
        //  ***************************************
    }

Respuestas a la pregunta(1)

Su respuesta a la pregunta