Я пытался отделить последовательность кадров из фильма следующим образом:
void storeSequence() {
Mat frame;
VideoCapture vid("myVideo.mp4");
if (!vid.isOpened()) {
return;
}
int fps = 30;
int count = 0;
bool cut = false;
vector<Mat> frames;
bool capture = true;
while (capture) {
vid >> frame;
imshow("video", frame);
char character = waitKey(1000 / fps);
Mat outMat;
switch (character) {
case 'c':
cut = !cut;
break;
case 27:
return;
case 'x':
capture = false;
}
if (cut) {
frame.copyTo(outMat);
frames.push_back(outMat);
count++;
}
if (!capture) break;
}
cout << count << endl;
for (int i = 0; i < count; i++) {
stringstream fn;
Mat img = frames[i];
fn << "seq1_" << i << ".jpg" << endl;
imwrite(fn.str(), img);
}
}
Видео отображается, и после того, как я дважды нажал кнопку c, а затем кнопку x, консоль сообщает мне, сколько кадров хранится в векторе "frames", но в моем файловом каталоге не записывается изображение. Чего мне не хватает? (Или есть еще лучший вариант для разделения последовательности?)