久しぶりにC++でプログラミングをしました。
いや、久しぶりっていうか・・・?
まぁ、いいや。
てか、わかんないね、これ。むずかしい。
C#でやったら、いつものようにさっさと終わったんだろうけど、そのうちC++使うようになるかもしれないと思って、今回はあえて自分用のツールをC++で作った次第です。
ツールとしては、設置したライブカメラで撮影したインターバル画像を、1日分を1つの動画にまとめるものを作ろうと思いまして。
OpenCVで複数枚の静止画を動画にします。
いろいろ試行錯誤しつつ、6時間くらいかけてようやくものになりました。
慣れないですよねー。
こんな感じで、インターバル画像が含まれるフォルダと、動画の出力先(ディレクトリのみ、ファイル名は「result.avi」で固定)を指定します。「参照」を押すと、フォルダダイアログからフォルダを指定できます。
フレームレートと解像度も指定できます。
数字以外の文字が含まれたり、解像度のフォーマットが(横幅)x(縦幅)になっていなかったりする場合はちゃんとはじきます。
ビデオの圧縮ダイアログは、OpenCVのcvCreateVideoWriterにフォーマットを明示せず「-1」を渡してやると勝手に出てきます。
いつも投稿しているインターバル動画は、1秒間に10枚の画像を表示するようにしているので、フレームレートは10です。
ライブカメラから受信する画像の解像度は640x480なので、それに合わせます。
画像は1日当たり1400枚以上あるので、時間がかかります。
あと、生成中は進捗状況をプログレスバーで表示できるようにしたのですが、なぜかうまく動いてくれません・・・。
最終的に動画は出力されるのでいいんだけど。
これが出力された動画。
音声ファイルをミックスしていないので、当然、絵だけです。
てか、音声までは、やらないかな。そこはWindowsムービーメーカーでいいです。
ちょっと文字が欠けたような感じになってます・・・って書こうと思っていたんですが、YouTubeに上げた動画は、まともでした。なんでだろ。
まぁ、いいや。
ここにBGMを加えれば、作業はおしまい。
1400枚以上の画像をムービーメーカーにつっこむと、けっこう重たいんだけど、これなら問題ないかな。
今回のツールで出力したものではなく、ムービーメーカーで作成したものですが、完成形としてはこんな感じになります。
まぁ、とりあえずモノとしてはこれでいいや。
どちらかというと、フロントエンドに近い感もしますが、まぁ、いいや。
う~ん、C++はむずいなって感想しかないな。