2016-11-15 6 views
0

Sprich ich habe eine 100x100 cv::Mat1b namens image. Dann mache ich:Behält cv :: Mat_ seinen ROI?

cv::Mat1b subImage = image(cv::Rect(0,0,49,49)); 

Um die linke obere Ecke des image in subImage zu bekommen. Sagen Sie dann, ich übergebe subImage an eine Funktion, sagen cv::findContours. Sind die resultierenden Konturen relativ zu image oder subImage? Das heißt, weiß findContours(), dass subImage eigentlich ein Sub-Image ist? Oder behandeln alle OpenCV-Funktionen einfach eine subImage, die so wie ein "vollständiges Bild" extrahiert wird, und dann ist es die Aufgabe des Aufrufers, die Ecke der extrahierten Region zu jeder der Koordinaten der Konturpixel hinzuzufügen (in diesem Beispielfall) Kontur wie in der ursprünglichen image interpretiert?

Antwort

1

Das Teilbild wird als vollständiges Bild behandelt, Funktionen, die auf dem Teilbild aufgerufen werden, wissen nicht, dass es kein vollständiges Bild ist.

Die findcontour Funktion einen optionalen Parameter der Koordinaten des ROI jedoch nicht nehmen, so dass Konturkoordinaten Alternativ bezogen auf das gesamte Bild zurückgegeben werden, können Sie einfach einen Versatz zu jedem Konturpunkt

+0

Ah zeigen wird, sehe ich dieses Argument jetzt, interessant. Es ist gut zu bestätigen, dass standardmäßig nicht angenommen wird, dass ein Bild ein Unterbild sein könnte. –

+0

@DavidDoria, die Funktionen behandeln Unterbilder nicht anders (obwohl die Daten vorhanden sind, um festzustellen, dass sie ein Unterbild sind) findcontour ist ein Sonderfall, weil Sie so oft mit Konturen tun möchten –

1

Wenn Sie SubImage erklären hinzufügen, :

Mat1b subImage = image(cv::Rect(0,0,49,49)); 

dann subImage wird als komplettes Mat Objekt durch eine OpenCV Funktion genommen werden. Jede in subImage vorgenommene Änderung wird jedoch auch im entsprechenden Teil von image wiedergegeben.

Wenn Sie die Änderungen in subImage von image ausschließen möchten, sollten Sie verwenden:

Mat1b subImage = image(cv::Rect(0,0,49,49)).clone(); 

Jetzt haben Sie eine subImage, die nicht zu image