if (chrono == 1800) //the 1800 chrono = 60 seconds
{
record = false; //record is equal at false to repeat the first condition
chrono = 1; //record is equal at false to repeat the first condition
}
chrono++; //incrementation of the chrono
После этого chrono
будет 2
, а record
будет false
, поэтому ваш код больше никогда не будет записываться (потому что (chrono == 1) && (record == false)
никогда не будет true
).Вам нужно установить chrono
в 0
в этом if-теле, чтобы оно впоследствии увеличивалось до 1
, или переместить приращение в тело if (record == true)
, чтобы оно не увеличивалось, когда выне запись.
Либо:
if (record == true) //The condition here is to activate
{
video.write(frame); //copy the frame from the webcam to the video file
imshow("webcam", frame); //display what we record on a window
chrono++; //incrementation of the chrono
}
(и уберите chrono++
дальше вниз)
Или:
if (chrono == 1800) //the 1800 chrono = 60 seconds
{
record = false; //record is equal at false to repeat the first condition
chrono = 0; //record is equal at false to repeat the first condition
}
chrono++; //incrementation of the chrono
На узле сайта в настоящее время вы не создаете новое видео каждую минуту, а добавляете к тому же видео.Возможно, вы захотите переместить строки, создающие ваш VideoWriter
в ваш цикл, особенно внутри if ((chrono == 1) && (record == false))
.Вне цикла просто оставьте VideoWriter video;
и используйте open
для инициализации нового видеофайла:
if ((chrono == 1) && (record == false)) //we start from the begining at 0 seconds and the recording has to be false to record again with the last condition (3rd condition)
{
time_t t = time(0);
struct tm* now = localtime( & t );
char buffer[80];
strftime(buffer, 80, "%F_%Hh%M.wmv", now); //get the date and time for my file
video.open(buffer, CV_FOURCC('W', 'M', 'V', '2'), 30, Size(640, 480), true); //Creation of my video file from my webcam
cout << "new recording in file: " << buffer << endl; //display the name of video file on the console
record = true;
}
Также ваш код пропускает первый кадр, не уверенный, намеренно ли это.Это можно исправить, изменив условие на if ((chrono == 0) && (record == false))
, а затем изменив вышеуказанные исправления для сброса chrono
, чтобы убедиться, что оно сбрасывается на 0
(вместо 1
или 2
).