Ich arbeite an Bildverarbeitung (OpenCC 3.0, C++).Video von einer bestimmten Zeit aufzeichnen mit OpenCV in C++
Eigentlich, was ich versuche zu tun:
- Nimm ein Video als 1 Minute (das ist meine Frage)
- Nach der Aufnahme eines Videos aufgezeichnetes Video gelesen (ich werde nach dem ersten Schritt, diesen Schritt tun ist gelöst)
- Erforderlichen Bildverarbeitungsprozess (Ich habe diesen Schritt bereits getan)
- Gehen Sie zurück zu Zustand 1 und den gleichen Prozess bis zum Abschluss der Bestellung.
Ich füge Code für state 1
an. (Dieser Code, Video aufzeichnen und auf Datei schreiben, bis ESC-Taste drücken.)
Könnten Sie mir helfen, wie kann ich Video für 1 Minute oder 10 Minuten oder eine bestimmte Zeit aufzeichnen?
Ich möchte Videos für 1 Minute Periode aufnehmen.
#include "opencv2/opencv.hpp"
#include <iostream>
using namespace std;
using namespace cv;
int main() {
VideoCapture vcap(0);
if (!vcap.isOpened()) {
cout << "Error opening video stream or file" << endl;
return -1;
}
int frame_width = vcap.get(CV_CAP_PROP_FRAME_WIDTH);
int frame_height = vcap.get(CV_CAP_PROP_FRAME_HEIGHT);
VideoWriter video("/MyVideo.avi", CV_FOURCC('M', 'J', 'P', 'G'), 10, Size(frame_width, frame_height), true);
for (;;) {
Mat frame;
vcap >> frame;
video.write(frame);
imshow("Frame", frame);
char c = (char)waitKey(33);
if (c == 27) break;
}
return 0;
}`
Das funktioniert.
Hier ist mein Code. Ich habe versucht, 10 Sekunden Videos in meinem letzten Code zu bekommen, aber ich habe 16 Sekunden Videos. Kannst du erklären, warum das so ist?
#include "opencv2/opencv.hpp"
#include <iostream>
#include <ctime>
#include <cstdio>
#include <time.h>
#include <stdio.h>
using namespace std;
using namespace cv;
int main() {
//////////////////// Added Part
time_t start, end;
//////////////////// Added Part
VideoCapture vcap(0);
if (!vcap.isOpened()) {
cout << "Error opening video stream or file" << endl;
return -1;
}
int frame_width = vcap.get(CV_CAP_PROP_FRAME_WIDTH);
int frame_height = vcap.get(CV_CAP_PROP_FRAME_HEIGHT);
VideoWriter video("C:\\Users\\lenovo\\Desktop\\OpenCV Webcam Video Record With R Key\\WebcamRecorder\\WebcamRecorder\\data\\MyVideo.avi", CV_FOURCC('M', 'J', 'P', 'G'), 10, Size(frame_width, frame_height), true);
//////////////////// Added Part
time(&start);
//////////////////// Added Part
for (;;) {
Mat frame;
vcap >> frame;
video.write(frame);
imshow("Frame", frame);
char c = (char)waitKey(33);
if (c == 27) break;
//////////////////// Added Part
time(&end);
double dif = difftime(end, start);
printf("Elasped time is %.2lf seconds.", dif);
if (dif==10)
{
std::cout << "DONE" << dif<< std::endl;
break;
}
//////////////////// Added Part
}
return 0;
}
Es ist nicht ganz klar, was Sie fragen.Können Sie Ihre Frage bearbeiten, um sie etwas klarer zu machen? –
Ich habe meinen Freund bearbeitet. Ich hoffe, du kannst es jetzt verstehen. –