从openCV中保存多个帧,并将时间作为名称

时间:2012-11-29 14:14:16

标签: c++ opencv video-capture

我正在尝试编写一个代码来保存openCV视频流中的一些帧。保存图像的名称应该是时间:这是我的代码:

#include "opencv2/opencv.hpp"
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include<conio.h>
#include <time.h>
using namespace cv;
using namespace std;

 int main(){

int key = 0;
char dateStr[9];
char timeStr[9];
_strdate(dateStr);
_strtime(timeStr);
char buffer[20];

 VideoCapture cap(1); // open the default camera
if(!cap.isOpened())  // check if we succeeded
    return -1;


namedWindow("image",1);
while(key!=27)
{
    Mat frame;
    cap >> frame; // get a new frame from camera
    imshow("image", frame);

    if(key==13){
        sprintf(buffer,"%s%s.tif",dateStr,timeStr);
        imwrite(buffer,frame);

        }
    key = waitKey(1000); 
} 

destroyAllWindows();
// the camera will be deinitialized automatically in VideoCapture destructor
return 0;

}               

当我跑步时,没有任何事情发生,我多次点击输入按钮没有任何反应,顺便说一下流式传输速度太慢。任何的想法!! 。 谢谢你的帮助

1 个答案:

答案 0 :(得分:0)

2件事:

流媒体播放速度很慢,因为您等待时间过长。更改key = waitKey(1000);中的值以更改程序的帧速率。

此外,如果您按Enter键,则只会保存 next 帧,而不是您当前看到的帧。您应该将key = waitKey(1000);语句移到if语句之前。