Почему OpenCV не имеет специализированной структуры данных для региона?

Я использую библиотеку обработки изображений Halcon MVTec в течение полугода и OpenCV в течение 1 года.

1. Одна вещь, которую я обнаружил, что Halcon значительно превосходит OpenCV, - это то, что OpenCV не имеет специализированной структуры данных для региона.

Это много отходов, если я хочу хранить маленький регион на большом пространстве. У OpenCV не должно быть какой-то специализированной структуры данных для региона, отличного от Mat Class.

2. Второй, который является результатом предыдущего, заключается в том, что OpenCV неудобно перебирать регионы.

Представьте себе сценарий, в котором у меня есть 10 связанных блоков региона после выполнения порога, и я хочу перебрать эти 10 блоков для обработки каждого из них. Насколько я знаю, я должен сначала использовать findContours, чтобы получить все контуры каждого региона, а затем я использую drawContour, чтобы получить этот регион. Могу ли я сказать, что регионы хранятся в данных контура, и каждый раз, когда я хочу вернуть регион, мне приходится вызывать 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
        //
        //  ***************************************
    }

Ответы на вопрос(1)

Ваш ответ на вопрос