OpenCV - Erstellen Sie ein Array von Mat-Objekte

Ich hätte gedacht, dass das trivial ist, aber ich habe einige Schwierigkeiten mit ihm.

Ich Lesen möchte eine video-Datei in den Speicher, und speichern Sie in einem array. Ich möchte das array von Zeigern auf Matte Objekte.

Dies ist der code den ich verwende:

cv::VideoCapture vidCap = cv::VideoCapture("file.avi");
int frames = (int)vidCap.get(CV_CAP_PROP_FRAME_COUNT);
cv::Mat** frameArray = new cv::Mat*[frames];
for (int num = 0; num < frames; num++) {
     frameArray[num] = new cv::Mat;
     vidCap >> *(frameArray[num]);
}

Allerdings, wenn ich ein Bild anzuzeigen (Z. B. das erste Bild im array), es zeigt die letzten Rahmen. Wohin gehe ich falsch? Dies ist der code für die Anzeige des Bildes:

cv::namedWindow("Movie", 1);
cv::imshow("Movie", *(frameArray[0]));
cv::waitKey(0);

Ich könnte mir vorstellen, dass, da es ist die Anzeige des letzten Bildes, alle Zeiger im array sind die gleichen, und deshalb wird es geändert wird, den gleichen Speicher. Allerdings, wenn ich printf die Zeiger, Sie sind anders.

Dank im Voraus für Eure Hilfe.

Sie könnten mit einem bestimmten Thema in den folgenden thread. stackoverflow.com/questions/1356543/...

InformationsquelleAutor JonaGik | 2012-02-04

Schreibe einen Kommentar