2016-06-22 10 views
0

Ich habe eine Matrix, die den Farbrahmen einer RGB-Kamera mit den Abmessungen 1920x1080 enthält. Von diesem Bild möchte ich die rechte und linke Seite loswerden, um die Dimensionen 960x1080 zu haben.Unterbereich der Bildmatrix in OpenCV

Allerdings kann ich nicht herausfinden, wie genau dieser Teil des Bildes zu bekommen. Ich bin in der Lage eine untergeordnete Bild mit Dimension zu extrahieren 960x1079 mit:

cv::Mat A = B(cv::Range(0, dim_y - 1), cv::Range(dim_x/4, dim_x - dim_x/4)); 

Das ist mir ein gültiges Bild gibt. Allerdings, wenn ich

cv::Mat A = B(cv::Range::all(), cv::Range(dim_x/4, dim_x - dim_x/4)); 

zu verwenden versuchen ... die Bildabmessungen sind 960x1080, aber die Daten sind ungültig und enthält keine Werte (mit VS Imagewatch Erweiterung geprüft)

Was könnte das sein Frage hier?

Antwort

1

Beide Versionen sind tatsächlich gültig.

Sie können es überprüfen, indem Sie es auf Ihrem Computer speichern. Es sollte ein Fehler von ImageWatch sein, wenn die rechte Grenze von cv::Range (nur für den Zeilenbereich) der Maximalwert ist.


Beachten Sie auch, dass die rechte Grenze von cv::Range exklusiv ist. Also, um die Bilder von zwei Versionen identisch zu machen, sollten Sie die erste Version zu ändern:

+0

Sie haben Recht, könnte darüber selbst gedacht haben! Vielen Dank trotzdem, es ist dann ein Image Watch Bug. – Schnigges