Я бы подумал, что это тривиально, но у меня проблемы с ним.OpenCV - Создание массива объектов Mat
Я хочу прочитать видеофайл в память и сохранить его в массиве. Я хочу, чтобы массив имел указатели на объекты Mat.
Это код, я использую:
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]);
}
Однако, когда я отобразить изображение (например, первое изображение в массиве), он отображает последний кадр. Где я иду не так? Это код для отображения изображения:
cv::namedWindow("Movie", 1);
cv::imshow("Movie", *(frameArray[0]));
cv::waitKey(0);
Я предположил бы, что, так как он показывает последнее изображение, все указатели в массиве одинаковы и, следовательно, он модифицирует ту же память. Однако, когда я печатаю указатели, они разные.
Заранее за вашу помощь.
У вас может возникнуть проблема, обсуждаемая в следующем потоке. http://stackoverflow.com/questions/1356543/cvgetcaptureproperty-always-return-0-for-cv-cap-prop-frame-count –