動画を読み込み、各フレームごとに画像をトリミング、リサイズして画像を保存するプログラムを書いているのですが、毎秒3回、毎秒5回など、動画を分割するタイミングを変更し画像を保存するにはどうすればよいでしょうか?
c++
1#include <opencv2/core.hpp> 2#include <opencv2/videoio.hpp> // videoioのヘッダーをインクルード 3#include <opencv2/highgui.hpp> // highguiのヘッダーをインクルード 4#include <iostream> 5#include <opencv2/imgproc/imgproc.hpp> 6 7int main(int argc, const char* argv[]) 8{ 9 char filename[80]; 10 int filenumber; 11 // (1)動画ファイルを開くための準備を行う 12 cv::VideoCapture cap("test2.mov"); 13 14 // (2)動画ファイルが正しく開けているかをチェックする(正しく開けていなければエラー終了する) 15 if (!cap.isOpened()) 16 return -1; 17 18 19 // 画像データを格納するための変数を宣言する 20 cv::Mat frame; 21 filenumber =1; 22 for (;;) 23 { 24 // (3)動画ファイルから1フレーム分の画像データを取得して、変数frameに格納する 25 cap >> frame; 26 27 cv::Rect roi(320, 240, 640, 480); 28 cv::Mat frame2(frame, roi); 29 cv::resize(frame2, frame2, cv::Size(),0.5, 0.5); 30 // 画像データ取得を取得できたら書き込み。 31 if (!frame2.empty()){ 32 sprintf(filename,"cutx0.5_img%d.jpg",filenumber++); 33 cv::imwrite(filename,frame2); 34 } 35 if (cv::waitKey(30) >= 0) break; 36 } 37 38 return 0; 39}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。