画像の連続撮影について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ホヅミ
記事: 110
登録日時: 13年前

画像の連続撮影について

#1

投稿記事 by ホヅミ » 11年前

opencvを使って画像の連続撮影をしています。
しかし、撮影を行った際に1枚ずつ保存し続けると動作が重くなり取りこぼしが起きてしまいます。
取りこぼしが起きないようにするためにはどうしたらよいでしょうか?

環境
Windows7
opencv 2.4
Visual Studio 2010

コード:

int main(void){
	CvCapture *capture = 0;
	IplImage *frame=0;
	char name[100];
	int i;
	int c;
	capture = cvCreateCameraCapture (0);
	cvNamedWindow ("Capture", CV_WINDOW_AUTOSIZE);
	while(1){
		frame= cvQueryFrame (capture);
	    cvShowImage ("Capture", frame);
	    sprintf(name,"DATA\\%05d.bmp",i);
		cvSaveImage(name,frame);
		c = cvWaitKey(10);
		if (c == '\x1b')
			break;
	}
	cvReleaseCapture (&capture);
	cvDestroyWindow ("Capture");
	return 0;
}

最後に編集したユーザー ホヅミ on 2012年9月20日(木) 23:10 [ 編集 1 回目 ]

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: 画像の連続殺絵について

#2

投稿記事 by みけCAT » 11年前

とりあえず、iを初期化も更新もしていないのは大丈夫ですか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

ホヅミ
記事: 110
登録日時: 13年前

Re: 画像の連続殺絵について

#3

投稿記事 by ホヅミ » 11年前

書き込んだ直後に気が付いて治しましたが変わりませんでした。

かずま

Re: 画像の連続撮影について

#4

投稿記事 by かずま » 11年前

c = cvWaitKey(10); の 10 を 100 にしてみたらどうなりますか?

ホヅミ
記事: 110
登録日時: 13年前

Re: 画像の連続撮影について

#5

投稿記事 by ホヅミ » 11年前

ご意見ありがとうございます。
フレーム数はこれ以上区切りたくないのでウェイトは2~15までにしたいです。
撮る枚数としては30秒間に800枚を目安にしたいです。
800枚分のバッファを用意してメモリ上にキャッシュとして残し最後に画像として出力という形を今は取っておりますが
逐次保存といった仕様にしたいです。

よろしくお願いします。

アバター
へにっくす
記事: 634
登録日時: 11年前
住所: 東京都

Re: 画像の連続撮影について

#6

投稿記事 by へにっくす » 11年前

ホヅミ さんが書きました:ご意見ありがとうございます。
フレーム数はこれ以上区切りたくないのでウェイトは2~15までにしたいです。
なにか勘違いしていないか?
100にするとどういうことが起きるかを知りたいのに、この返答はないと思いますが。

ちなみに30秒で800枚って、1枚につき0.0375秒。1秒につき26.7枚
コードをみる限りでは、普通に1枚ずつとって1枚ずつファイルに保存という手順なので、
いくら早いパソコンだろうが無理なんでは?
保存する先をRAM DISKにするとかしか思いつかないな(それでも26枚も保存できないかもね)。

デジカメで1秒につき60枚なんてのもありますが、それはハードが対応しているからそのスペックなのであって、
カメラ用にカスタマイズもされていないパソコンにその要求は無理と分かりそうなもんですけどね。
連写に強い、スポーツ向けコンパクトデジカメを選ぶ
written by へにっくす

ホヅミ
記事: 110
登録日時: 13年前

Re: 画像の連続撮影について

#7

投稿記事 by ホヅミ » 11年前

諦めて並列処理で行きます。
自己解決しました。
ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る