Я пытаюсь использовать алгоритм MSER в OpenCV 3.0.0 beta для извлечения текстовых областей из изображения. В конце мне нужна бинарная маска с обнаруженными областями MSER, но алгоритм предоставляет только контуры. Я попытался нарисовать эти контуры, но я не получил ожидаемого результата.OpenCV 3.0.0 MSER Binary Mask
Это код, я использую:
void mserExtractor (const Mat& image, Mat& mserOutMask){
Ptr<MSER> mserExtractor = MSER::create();
vector<vector<cv::Point>> mserContours;
vector<cv::Rect> mserBbox;
mserExtractor->detectRegions(image, mserContours, mserBbox);
for(int i = 0; i<mserContours.size(); i++)
{
drawContours(mserOutMask, mserContours, i, Scalar(255, 255, 255), 4);
}
}
Это результат:
Проблема состоит в том, что не-выпуклые области заполнены линий, пересекающих фактическую MSER область. Я хотел бы просто список пикселей в области, как я получаю от MATLAB detectMSERFeatures
:
Любые идеи, как получить заполненную область от контуров (или получить маску MSER другими способами)?