Сохранение нескольких кадров из openCV со временем в качестве их имени

Я пытаюсь написать код, который сохраняет некоторые кадры из потокового видео 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

Решение

2 вещи:

Поток идет медленно, потому что вы слишком долго ждете. Изменить значение в key = waitKey(1000); изменить частоту кадров вашей программы.

Кроме того, если вы нажмете Enter, вы сохраните только следующий кадр, а не кадр, который вы видите в данный момент. Вы должны переместить это key = waitKey(1000); заявление перед if заявление.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]