我是 C++ 新手,我正在尝试创建一个 cv::Mat 列表。
这可以分配相当多的内存,但我只有大约十个小垫子可以加载到列表中。
我制作了这段代码,但不确定为什么它不起作用。
void Utils::getFramesFromVideo(std::string file,std::list<cv::Mat>& listMatOutput) {
cv::VideoCapture* videoCapture = new cv::VideoCapture(file);
bool hasImage = false;
cvNamedWindow("WhileReading", 1);
do {
cv::Mat frame;
hasImage = videoCapture->read(frame);
if (hasImage) {
listMatOutput.push_back(frame);
imshow("WhileReading", frame);
waitKey(0);//give some time to see the frame (debug)
}
} while (hasImage);
cvNamedWindow("AfterReading", 2);
for (std::list<Mat>::const_iterator iterator = listMatOutput.begin();
iterator != listMatOutput.end(); iterator++) {
imshow("AfterReading", *iterator);
waitKey(0);//give some time to see the frame (debug)
}
videoCapture->release();
}
第一次加载正确显示帧,但在第二个窗口(AfterReading)中,图像是黑色的,带有红色条纹。有人可以给一些建议吗?