こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

実行結果をフォルダに格納

 aviファイルの動画を1フレームずつの画像に分けていくプログラムを作りました。
 hogehoge%05d.jpgで画像ファイルを生成していくようにしているのですが、この実行結果から得られた画像を、すべてフォルダに格納するように改良したいのです。どうしたらいいでしょうか?
 プログラムは以下です。

-------------------------------
/* 警告warningを出なくする */
#pragma warning(disable : 4996)
#pragma warning(disable : 4244)

/* リンクするOpenCVライブラリ指定 */
#pragma comment(lib,"cxcore.lib")
#pragma comment(lib,"cv.lib")
#pragma comment(lib,"highgui.lib")
//#pragma comment(lib,"ipl.lib")

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "cxcore.h"
#include "cv.h"
#include "image.h"

//読み込む動画ファイル名
char* filename="result1.avi";

//IplImage
IplImage* src;

int main(){

CvCapture* capture = NULL;
int key; //キー入力
int fileCount;
char fileName[256];

//指定したAVIファイルが見つからない場合
if(NULL==(capture = cvCaptureFromAVI(filename))){
fprintf(stderr,"指定のaviファイルが見つかりませんでした.");
return -1;
}

//画像表示ウィンドウの準備
cvNamedWindow("Source Image", CV_WINDOW_AUTOSIZE);

//画像表示ウィンドウの出現位置指定
cvMoveWindow("Source Image", 50, 50);

//処理ループの開始
for(fileCount = 1;;fileCount++){
//AVIファイルからフレーム画像を取り出す
if(NULL==(src=cvQueryFrame(capture))){
break;
}

//画像表示
cvShowImage("Source Image", src);

//画像保存
sprintf(fileName,"hogehoge%05d.jpg",fileCount);
cvSaveImage(fileName, src); //
//キー入力
key = cvWaitKey(10);

//ESCキーを押すと終了
if(key==0x1b)
break;

}

//解放
cvReleaseCapture(&capture);
cvDestroyWindow("Source Image");

return 0;
}
---------------------------------

投稿日時 - 2009-11-14 20:25:15

QNo.5447938

困ってます

質問者が選んだベストアンサー

>hogehoge%05d.jpgで画像ファイルを生成していくようにしているのですが、この実行結果から得られた画像を、すべてフォルダに格納するように改良したいのです。どうしたらいいでしょうか?

でしたら、出力ファイル名を生成している
>sprintf(fileName,"hogehoge%05d.jpg",fileCount);
でフォルダ名込みで生成すればよいのでは?

環境明示されていないので微妙ですが、
sprintf(fileName,"output\\hogehoge%05d.jpg",fileCount);
とか
sprintf(fileName,"output/hogehoge%05d.jpg",fileCount);
とか…。
勿論、出力前にフォルダが作成済みであることと、そこへのファイル書き出しが可能である必要はありますが。
# 環境によってはファイル一覧は取得できるが書き出しはできない。とかもありますし。
# 指定先がCD-ROM上のフォルダとか。

ユーザーに入力させて…の場合は、
sprintf(fileName,"%s\\hogehoge%05d.jpg",folderName,fileCount);
とかで連結すればよいでしょう。
当然ですがfileNameには十分なサイズが必要になりますけど。
この場合でも該当フォルダへの書き出しが可能であるかは別問題になりますが。
# 存在しないフォルダが指定された場合に作成して…というのであれば、環境に用意された方法で作成して下さい。

投稿日時 - 2009-11-15 00:35:45

お礼

 ありがとうございます。できました。
 簡単でしたね。

投稿日時 - 2009-11-15 13:36:36

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問