Я пытаюсь написать код, который сохраняет некоторые кадры из потокового видео 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;
}
когда я запускаю это, ничего не происходит, и я нажимаю кнопку ввода несколько раз, но ничего не происходит, и, кстати, потоковая передача идет слишком медленно. любая идея!! ,
Спасибо за вашу помощь
2 вещи:
Поток идет медленно, потому что вы слишком долго ждете. Изменить значение в key = waitKey(1000);
изменить частоту кадров вашей программы.
Кроме того, если вы нажмете Enter, вы сохраните только следующий кадр, а не кадр, который вы видите в данный момент. Вы должны переместить это key = waitKey(1000);
заявление перед if
заявление.
Других решений пока нет …