Ich versuche, MSER-Algorithmus in OpenCV 3.0.0 Beta zu verwenden, um Textbereiche aus einem Bild zu extrahieren. Am Ende brauche ich eine binäre Maske mit den erkannten MSER-Regionen, aber der Algorithmus bietet nur Konturen. Ich habe versucht, diese Konturen zu zeichnen, aber ich bekomme nicht das erwartete Ergebnis.OpenCV 3.0.0 MSER binäre Maske
Dies ist der Code I verwendet werden:
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);
}
}
Dies ist das Ergebnis:
Das Problem ist, dass nicht-konvexen Bereiche durch Linien gefüllt sind, die Region tatsächlichen MSER kreuzen. Ich möchte nur die Liste der Pixel in der Region, wie ich aus MATLAB erhalten detectMSERFeatures
:
Irgendwelche Ideen, wie man den gefüllten Bereich von den Konturen zu bekommen (oder den MSER Maske auf andere Weise zu bekommen)?