0

我正在尝试编写一个代码来保存来自 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;

}               

当我运行此程序时,什么都没有发生,并且我不止一次地按了 enter 按钮,而且流太慢了。任何想法!!. 感谢您的帮助

4

1 回答 1

0

2件事:

流式传输很慢,因为您等待的时间太长。更改值key = waitKey(1000);以更改程序的帧速率。

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

于 2012-11-29T14:33:23.830 回答