No.4ベストアンサー
- 回答日時:
おめでとうございます.うまくいって良かったです.
> 以前教えていただいたサイトのソースにcvSaveImage( "hogehoge.jpg", src );を加えて実行したところフレーム画像が出力されました。しかし、for文に含まれているのに1枚しか出力されませんでした。どうしてでしょう?
今のままですと,常に最新のフレームでファイルが上書きされてしまいます.
すべて別ファイルにしたいならば,以下の様に,1フレームごとに
cvSaveImageに与えるファイル名文字列を作り直す様にしましょう.
(バグチェックしてないので,何かエラーがでたらすみません)
----------------------------------------------------------------
int main(){
int fileCount; // この行を加えてください
char fileName[1024]; // この行を加えてください
~
//処理ループの開始
for(fileCount = 1;;fileCount++){ // この行をこのように書き換えてください
~
//画像保存
sprintf(fileName,"hogehoge%05d.jpg",fileCount); // この行を加えてください
cvSaveImage(fileName, src); // この行をこのように書き換えてください
~
----------------------------------------------------------------
こういう処理のカスタマイズは,いろいろと自分で試行錯誤してみると覚えが早くなりますよ.
No.5
- 回答日時:
> 最後にこういったプログラムを勉強できるサイトなどありましたら教えてください。
難しい質問ですね。
やること(画像処理、音声処理、GUI、ゲーム、通信、etc)や環境(Windows、Linux、Mac、組み込み)によっていろいろなサイトがあります。
その都度探してみるしかないです。
私がよく参照する、基本に近いものをいくつか紹介します。
・C言語関係
C言語の関数リファレンスなら「BohYoh.com【C言語講座】標準ライブラリ関数」
http://www.bohyoh.com/CandCPP/C/Library/index.html
簡単なC言語の関数リファレンス・ソース例ならば「初心者のためのポイント学習C言語」
http://www9.plala.or.jp/sgwr-t/
ウィンドウズよりのC言語基本は「猫でもわかるプログラミング」
http://homepage2.nifty.com/c_lang/
・OpenCV関係
OpenCVの基礎の確認・関数リファレンス・ソース例は「http://opencv.jp/」
http://opencv.jp/
OpenCVのちょっと凝ったひな形を見るなら「OpenCV@Chihara-Lab.」
http://chihara.naist.jp/opencv/?FrontPage
以上です。
No.3
- 回答日時:
ニコンのカメラの動画なんですね。
おそらく、それですとAVIファイルといっても、実態はMotion JPEG形式なのだと思います。
http://ja.wikipedia.org/wiki/Motion_JPEG
TMPEGEncで読み込む方法としては、環境設定のVFAPIプラグインタブで、
DirectShow Multimedia File Readerだけを残して、後のチェックをはずすか、
これの優先度を上げてください(こうしないと、ソフトウェア側で普通のAVIファイルだと
思って頑張って読んでも読めない、ということになってしまいます。ほかのaviutl等の
ソフトでも、たぶん同じ現象が起きています)
(※Motion JPEG形式ファイルが手元にないので未検証)
こうすることによって無圧縮AVI形式に変換でき、OpenCVで読み込めるはずです。
蛇足)
原点(デジカメ動画をコマ画像に分けたい)に立ち返ってみると...元ファイルの実態は
中でJPEG画像が並んでいるだけなので「Motion JPEGのままでファイル開く→一定長(可変?)
を読んで(ヘッダーをつけて)書き出す→以下繰り返し」などは出来ないのでしょうか。
また、SourceForgeにそれっぽいのがGPL(ソース付き)であがっていました。
これを参考にするか、そのまま関数を利用させてもらっても良いかもしれませんね。
・Almara Photo Editor
http://sourceforge.net/projects/almara/
almara-0.9.0.tar.gzに一式入っています。実際必要なのはmjpeg-jpegsフォルダ内のソースです。
・mjpeg-jpegs
「mjpeg-jpegs is a tool for coverting Motion-JPEG files
such as the short movies produced by digital cameras
to JPEG files and back. Both AVI and QuickTime
formats are supported, including audio tracks.」
ありがとうございます。読み込むことでできました!
以前教えていただいたサイトのソースにcvSaveImage( "hogehoge.jpg", src );を加えて実行したところフレーム画像が出力されました。しかし、for文に含まれているのに1枚しか出力されませんでした。どうしてでしょう?
「Motion JPEGのままでファイル開く→一定長(可変?)を読んで(ヘッダーをつけて)書き出す→以下繰り返し」も試してみたいと思います。
No.2
- 回答日時:
とりあえず、ファイルの場所の勘違いやファイルパスに使用している文字の問題では無いと仮定します。
一番簡単な方法は、映像ファイルを無圧縮avi形式に変換することでしょう。
下記のページに従って、TMPGEncのファイル出力機能でお使いのファイルを変換し直してください。
映像コーデックの選択は無圧縮24ビットRGBです。
http://www.xucker.jpn.org/pc/tmpgenc_wmv2avi.html
(ただし、変換にかなりの時間がかかること、ファイルサイズがかなり大きくなることに注意してください)
また、私の環境ですと、完全な無圧縮以外にも、ちょっと古めのCinepak CodecもOpenCVで読み込めました
(TMPGEncでは「Cinepak Codec by Radius」)。
そのほかにも、Windowsデフォルトで読めるaviコーデックのファイルならば読めるかもしれません(未確認)。
最近の高圧縮コーデックファイルを読み込むためにはDirectShow(およびDirectShow編集サービス)の機能を使う必要がありそうです。
ただし、OpenCVと比較しても煩雑です。
「C++ および Visual Basic アプリケーション開発者のためのオーディオおよびビデオ テクノロジ」
http://msdn.microsoft.com/ja-jp/library/dd148664 …
「DirectShow 編集サービスの使い方」
http://msdn.microsoft.com/ja-jp/library/cc371134 …
ありがとうございます。TMPGEncを使ってデジカメの動画を無圧縮にしようと実行してみたのですができませんでした。無圧縮にしたい動画はaviファイルで、デジカメはNiconの「COOLPIX S510」です。
また、フリーソフトのaviutlも使ってみたのですが「ファイルの読み込みに失敗しました。このファイルの形式には対応していないか、対応するこーデックやプラグインが登録されていない可能性があります。」とでました。
デジカメの映像を使おうとするとうまくいかないのはなぜなんでしょう?
No.1
- 回答日時:
OpenCV(とC言語)を使用するのがよいでしょう.
http://chihara.aist-nara.ac.jp/opencv/
このサイトのサンプルプログラム「LoadVideo.cpp」では,AVIファイルを読み込んでフレーム画像を取り出し,表示する,を繰り返しています.
この表示部分「cvShowImage("Source Image", src);」をOpenCVで用意されている「cvSaveImage( "hogehoge.jpg", src );」に置き換えればよいでしょう.
http://chihara.naist.jp/opencv/?%C6%B0%B2%E8%A5% …
回答ありがとうございました。さっそくプログラムを実行してみたのですがデジカメで撮影した動画は”指定のaviファイルが見つかりませんでした.”と出力され、読み込めませんでした。これは、コーデックが特殊だからでしょうか?この問題をどう解消したらよいのでしょうか。
また、読み込むことのできるaviファイルはどういったものかを教えてください。お願いします!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ファイル名の先頭にアンダース...
-
csvファイルを開かずに文字を検...
-
VBSでファイルを開く
-
ファイルへの書き込み
-
C++書式について
-
Cコンパイル時のマルチデファイ...
-
COM相互運用機能のON,OFFによる...
-
マウスポインタの変更
-
ファイルを開かずにカスタムド...
-
ライトモードとリードモードの...
-
C言語初心者の質問失礼します。
-
SGファイルって何ですか?
-
[VBScript]ファイルの入出力を...
-
OpenDialog1->FileNameについて
-
フリーソフトウェアでflaファイ...
-
【C#】リソースファイルの埋め...
-
プログラムファイルの分割で…
-
アプリケーション終了時例外エ...
-
バッチで118項目のCSVを処理し...
-
VB.NET ファイルをひとつにまと...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語初心者の質問失礼します。
-
csvファイルを開かずに文字を検...
-
ファイル名の先頭にアンダース...
-
テキストファイルの最終行を削...
-
CSVファイルへの保存の際、デー...
-
VBに、Cのincludeのようなもの...
-
分割コンパイルの#defineについて
-
SGファイルって何ですか?
-
グローバル変数のよくない使い...
-
Excelマクロでの再読込み方法
-
iniファイルに追記がしたいです。
-
ASP .NETでファイル選択ダイア...
-
ハッシュの計算時間について
-
バッチで118項目のCSVを処理し...
-
FileOpen 関数で既にファイル...
-
Javascript で INI の読み書き
-
fopenできる上限の変更
-
VBAにてEXCEL以外のファイル(テ...
-
マウスポインタの変更
-
C言語のfopenについて教えてく...
おすすめ情報