OpenCVとVisual Studio 2005を使ってカメラ画像を出力し、キーを押すことで画像をファイルに保存しています。しかし、キーを押すたびに画像が上書きされてしまい、結局保存ファイルは一つだけになってしまい連続して画像ファイルが取得できません。下記のプログラムで下のほうに書いてあるcvSaveImage()関数にうまくカウンタを使ってやればいいと思うのですが、私の技量ではできませんでした。知っている方がいたら教えてください。よろしくお願いします。
//---------------------------------------------------------
// 概要 : カメラからの入力画像をそのまま表示
// File Name : image.c
// Library : OpenCV for MS-Windows 1.0
//---------------------------------------------------------
#include <stdio.h>
#include <highgui.h>
int main( int argc, char** argv ){
int key;//キー入力用の変数
CvCapture *capture;//カメラキャプチャ用の構造体
IplImage *frameImage;//キャプチャ画像用IplImage
char windowNameCapture[] = "Capture";//キャプチャした画像を表示するウィンドウの名前
//カメラを初期化する
if ( ( capture = cvCreateCameraCapture( -1 ) ) == NULL ) {
//カメラが見つからなかった場合
printf( "カメラが見つかりません\n" );
return -1;
}
//ウィンドウを生成する
cvNamedWindow( windowNameCapture, CV_WINDOW_AUTOSIZE );
//メインループ
while ( 1 ) {
//カメラからの入力画像1フレームをframeImageに格納する
frameImage = cvQueryFrame( capture );
//画像を表示する
cvShowImage( windowNameCapture, frameImage );
//'q'キーが入力されたらループを抜ける
key = cvWaitKey( 1 );
if ( key == 'q' ) {
break;
}else if( key == 'c'){
cvSaveImage("picture.bmp", frameImage );
}
}
//キャプチャを解放する
cvReleaseCapture( &capture );
//ウィンドウを破棄する
cvDestroyWindow( windowNameCapture );
return 0;
}
No.1ベストアンサー
- 回答日時:
OpenCV というよりも単に文字列の問題ですよね?
例えば以下のようにします。
int main( int argc, char** argv ){
// 以下二行追加
int counter = 0;
char str[32];
/* 省略 */
key = cvWaitKey( 1 );
if ( key == 'q' ) {
break;
} else if( key == 'c'){
// 以下二行追加、修正
sprintf(str, "img_%04d.bmp", counter++);
cvSaveImage(str, frameImage );
}
/* 省略 */
VC2005 では sprintf() に警告が出るかもしれませんので、
問題があれば sprintf_s() などを使って下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- MySQL エラー 1068 (42000): 複数の主キーが定義されていますエラー 2 2022/11/17 04:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
intとlongは同じ?
-
2の補数を計算するプログラム
-
C++で表を作成したいのです ...
-
C#メール受信から件名、本文を...
-
分数の足し算をさせるプログラ...
-
argvのNULLチェック
-
画像の拡大・縮小
-
複数の共有メモリの作成
-
C言語プログラミング 漸化式に...
-
コマンドプロンプトのウィンド...
-
乱数生成について
-
再起呼び出しの回数をカウント...
-
C言語で簡単なパックマンゲーム...
-
階乗のプログラム
-
画素へのアクセスについて困っ...
-
C言語で%を使わない余りの出し方
-
C++ Debug Errorについて教えて
-
OpenCVによる4値化について
-
マイナスからプラスへ転じた時...
-
Enterキーを押されたら次の処理...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
おすすめ情報