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は同じ?
-
C#で疑似カラー
-
画像の拡大・縮小
-
C言語のプログラムについて(...
-
再起呼び出しの回数をカウント...
-
OpenCV輪郭抽出→座標取得でのバ...
-
OpenCVによる4値化について
-
異なるn個の整数からr個の整数...
-
C言語の問題
-
C言語プログラミング 漸化式に...
-
1.4なのに
-
分数の足し算をさせるプログラ...
-
C言語で%を使わない余りの出し方
-
へんな現象
-
Enterキーを押されたら次の処理...
-
#define _CRT_SECURE_NO_WARNIN...
-
マイナスからプラスへ転じた時...
-
*をユーザーが入力した数字の数...
-
2÷3などの余りについて
-
10個出力で改行したいのですが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
2の補数を計算するプログラム
-
intとlongは同じ?
-
再起呼び出しの回数をカウント...
-
C言語で%を使わない余りの出し方
-
迷路を脱出する経路探索プログ...
-
画像の拡大・縮小
-
分数の足し算をさせるプログラ...
-
C言語で簡単なパックマンゲーム...
-
C++で表を作成したいのです ...
-
条件が多い場合
-
複数の共有メモリの作成
-
ヒストグラム均等化処理プログラム
-
3のつく数と3の倍数を表示 C言語
-
argvのNULLチェック
-
乱数で交互に偶数、奇数が、、、。
-
プログラミングに関して
-
OpenCVによる4値化について
-
whileとifを使い偶数を出すには
-
16bitで乱数を生成する方法
-
再帰処理をループ処理に変換
おすすめ情報