1
我在使用OpenCV 3.1.0录制视频时试图给帧添加时间戳。然而,在使用时VideoCapture ::得到(CV_CAP_PROP_POS_MSEC)来获得最后一帧的毫秒时间戳抓起返回的值始终为0。OpenCV 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
你能帮我明白我在做什么错吗?
谢谢:)
不幸的是,并非每个摄像头都支持opencv VideoCapture的每个属性。 – Micka