【发布时间】:2012-02-04 04:57:34
【问题描述】:
我原以为这是微不足道的,但我遇到了一些麻烦。
我想将视频文件读入内存并将其存储在数组中。我希望数组是指向 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]);
}
但是,当我显示图像(例如,数组中的第一张图像)时,它会显示 last 帧。我哪里错了?这是显示图像的代码:
cv::namedWindow("Movie", 1);
cv::imshow("Movie", *(frameArray[0]));
cv::waitKey(0);
我想,因为它显示的是最后一张图像,所以数组中的所有指针都是相同的,因此它正在修改相同的内存。但是,当我打印指针时,它们是不同的。
【问题讨论】:
-
您可能在以下线程中遇到了问题。 stackoverflow.com/questions/1356543/…