C++初心者です.
ただいまOpenCVを用いて,連番のJpegファイルを繋ぎ合わせて1つの動画(mp4)を作成しようとしています.
サンプルプログラムを参考にし,
「C:\〇〇〇\」にある30fpsの『0000000.jpg』『0000001.jpg』『0000002.jpg』...といった画像を一つの動画にして『C:\Users\△△△\Documents\□□□.mp4』というファイルに出力するプログラムです。
記載のコードを実行すると,
『sprintf(image_name, "C:\〇〇〇.jpg", i);』
の行にエラーがありました.
エラーの内容は,以下の通りです.
'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
環境は以下の通りです.
・Windows10
・Visual Studio 2015
・OpenCV3.3.0
・C++
#include "opencv2/highgui.hpp" #include "opencv2/Videoio.hpp" #include <opencv2/core.hpp> #include <stdio.h> #include <iostream> using namespace std; using namespace cv; int main(){ //出力する動画ファイルの設定をします。拡張子はMP4で、毎秒30フレーム、画像縦横サイズは2048*4088。 VideoWriter writer("C:\Users\△△△\Documents\□□□.mp4", VideoWriter::fourcc('M', 'P', '4', '5'), 30.0, Size(2048, 4088)); //動画ファイルがちゃんと作れたかの判定。 if (!writer.isOpened()) { return -1; } //動画にする画像の名前を入れる文字配列。 char image_name[100]; //動画にする画像を入れるMat。 Mat image; //『0000000.jpg』から『0001673.jpg』までの画像を動画にしていく。 for (int i = 0; i < 1673; i++) { //画像の名前を更新。 sprintf(image_name, "C:\〇〇〇.jpg", i); //名前に対応した画像を取り込み。 image = imread(image_name); //画像がなければ処理を飛ばす。 if (image.empty()) { cout << "no image : " << image_name << endl; continue; } //動画ファイルに画像を出力。 writer << image; } return 0; }
p.s.再生時の加速度を正弦波状に変化させるにはどのようなコードを入力するとよいでしょうか.
イメージとしては再生速度が早くなったり遅くなったりする感じです.
サンプルプログラムをおしえていただけると幸いです.
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/10/17 03:46