私は画像処理に取り組んでいます(OpenCC 3.0、C++)。C++でOpenCVを使用して特定の時間のビデオを録画する
実は、私は何をしようとしていることである:1分として
- 動画で(それは私の質問です)
- 映像を記録した後、録画したビデオを読んで(私が最初のステップの後に、この手順を行います
- 必要な画像処理を行います(すでにこの手順を実行しました)
- 状態1に戻り、終了するまで同じ処理を行います。
state 1
のコードを添付しています。 (このコードは、ビデオを録画し、ESCキーを押すまでファイルに書き込みます。)
1分または10分または特定の時間のビデオを録画するにはどうすればよいですか?
1分間の動画を録画します。
#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;
}`
これは機能しています。
ここに私のコードです。私は最後のコードで10秒のビデオを取得しようとしていたが、私は16秒のビデオを持っていた。なぜそれが説明できますか?
#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;
}
あなたが求めていることはあまり明確ではありません。質問を編集してもう少し明確にすることはできますか? –
私は私の友達を編集しました。私はあなたが今理解できることを願っています。 –