我正在尝试使用OpenCV 3.1.0录制视频时对帧进行时间戳记。但是,当使用VideoCapture::get(CV_CAP_PROP_POS_MSEC)获取所抓取的最后一帧的毫秒时间戳时,返回的值始终为0。
我正在使用的代码:
int fps = 10;
VideoCapture cap(0); // open the default camera
cap.set(CV_CAP_PROP_FPS, fps);
cap.set(CV_CAP_PROP_FRAME_WIDTH, 1280);
cap.set(CV_CAP_PROP_FRAME_HEIGHT, 1024);
if(!cap.isOpened()) // check if we succeeded
return -1;
Mat testFrame;
cap >> testFrame;
cap >> testFrame;
cap >> testFrame;
Size outSize = Size(testFrame.cols, testFrame.rows);
VideoWriter writer("video.avi", CV_FOURCC('M','J','P','G'), fps, outSize, true);
for(; ;)
{
Mat frame;
cap >> frame; // get a new frame from camera
long stamp = cap.get( CV_CAP_PROP_POS_MSEC); // THIS DOESN'T SEEM TO WORK
std::cout << "Timestamp: " << stamp << std::endl;
writer.write(frame);
}
作为输出,我总是得到很多行,如下所示:
Timestamp: 0
您能帮我了解我在做什么错吗?
谢谢 :)
最佳答案
此错误已在最近的pull request中修复。从链接:
关于c++ - OpenCV VideoCapture::get(CV_CAP_PROP_POS_MSEC)返回0,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38899857/