OpenCVでキャプチャした画像をbmp保存したい
OpenCVでカメラからキャプチャした画像(コマ画像)をbmpで保存しようと思っています。
以下のプログラムで一応bmp画像は保存できるのですが、キー入力をしないと保存できません。
#include <iostream>
#include <stdio.h>
#include <cv.h>
#include <highgui.h>
#include <math.h>
#include <stdlib.h>
int main(void){
//画像保存用
char str[32];
//キー入力用
int key;
//カメラの用意
CvCapture *capture;
IplImage *frame = NULL; //カメラ画像用
//カメラ・デバイスの先頭ポインタを取得
capture = cvCaptureFromCAM(-1);
//カメラ画像のサイズ
double height = 240;
double width = 320;
//カメラ初期化
if(capture == NULL){
//カメラが見つからなかった場合
printf("カメラが見つかりません\n");
return (0);
}
//カメラ画像を表示するウィンドウの生成
cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT, height);
cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH, width);
cvNamedWindow("CaptureFromCamera", CV_WINDOW_AUTOSIZE);
//キー入力されたら画像をキャプチャ
while(1){
//カメラ画像からフレーム画像を取り込む
frame = cvQueryFrame(capture);
if(frame == NULL)
break;
//画像の表示
cvShowImage("CaptureFromCamera", frame);
//sキー入力で画像を保存、Escキー入力でループから抜ける
key = cvWaitKey(10);
if(key == '\x1b')
break;
else if(key == 's'){
sprintf(str, "Capture_Bitmap.bmp");
cvSaveImage(str, frame);
}
}
//キャプチャの解放
cvReleaseCapture(&capture);
//ウィンドウの破棄
cvDestroyWindow("CaptureFromCamera");
}
自分が作りたいプログラムは、
・カメラからコマ画像を取得
↓
・それをbmp形式にする
↓
・変換した画像はファイルにではなく、プログラム中の変数に保存
↓
・プログラムが動いている間ずっとこの処理を行う
というものです。
特に変換した画像をプログラムが動いている間、ずっと変数に保存し続ける方法がわかりません。
プログラム中の変数に保存したい理由は、保存したコマ画像を用いてテンプレートマッチングなどを行いたいからです。
どなたか教えていただけると助かります。