我原以为这很平凡,但我遇到了一些麻烦。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 – 2012-02-04 06:25:47