我正在尝试编写一个代码来保存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;
}
当我跑步时,没有任何事情发生,我多次点击输入按钮没有任何反应,顺便说一下流式传输速度太慢。任何的想法!! 。 谢谢你的帮助
答案 0 :(得分:0)
2件事:
流媒体播放速度很慢,因为您等待时间过长。更改key = waitKey(1000);
中的值以更改程序的帧速率。
此外,如果您按Enter键,则只会保存 next 帧,而不是您当前看到的帧。您应该将key = waitKey(1000);
语句移到if
语句之前。