opencvにて動画を読み込みresize関数で動画サイズを1/4にした後、縮小された動画を保存したいと考えています
c++
1#include <opencv2/highgui/highgui.hpp> 2#include <opencv2/opencv.hpp> 3#include <opencv2/imgproc/imgproc.hpp> 4#include <opencv2/features2d/features2d.hpp> 5#include <opencv2/calib3d/calib3d.hpp> 6#include <opencv2/xfeatures2d/nonfree.hpp> 7#include <iostream> 8 9using namespace cv; 10using namespace std; 11 12 13 14int main(int argh, char* argv[]){ 15VideoWriter writer("movie.mp4", CV_FOURCC_MACRO('M', 'P', '4', 'V'), 30, Size(960, 540), true); 16 17Mat img_src1; 18int cols,rows; 19 20VideoCapture cap("movie2.mp4"); //Macの場合 21cap >> img_src1 ; 22 23//動画の表示 24int max_frame = cap.get(CV_CAP_PROP_FRAME_COUNT); //元動画のフレーム数 25for(int i = 0; i < max_frame; i++){ 26 27 cap >> img_src1 ; //1フレーム分取り出してimgに保持させる 28 //waitKey(1); // 表示のために1ms待つ 29 30 int width = img_src1.cols;//元動画の横幅 31 int height = img_src1.rows;//元動画の縦幅 32 33 Mat out; 34 resize(img_src1, out, Size(), 0.5, 0.5); 35 36 // waitKey(1);// 表示のために1ms待つ 37 38 writer << out; 39 40 //imshow( "resize", out);//リサイズ後の動画表示 41 42 //waitKey( 0 ); 43 44 } 45 destroyAllWindows(); 46 return 0; 47} 48
int max_frame = cap.get(CV_CAP_PROP_FRAME_COUNT); //元動画のフレーム数
for(int i = 0; i < max_frame; i++){
にて元動画のフレーム数分反復させ、それぞれの画像をリサイズし再度動画とて保存をしようとしています。
動画ファイルmovie.mp4自体は出力されています。
元動画の解像度は(1920,1080)です。
回答2件
あなたの回答
tips
プレビュー