Почему 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
//
// ***************************************
}