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
//
// ***************************************
}