dポイントプレゼントキャンペーン実施中!

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形式にする

・変換した画像はファイルにではなく、プログラム中の変数に保存

・プログラムが動いている間ずっとこの処理を行う

というものです。
特に変換した画像をプログラムが動いている間、ずっと変数に保存し続ける方法がわかりません。
プログラム中の変数に保存したい理由は、保存したコマ画像を用いてテンプレートマッチングなどを行いたいからです。

どなたか教えていただけると助かります。

A 回答 (1件)

OpenCV使ったことない者の回答で恐縮ですが、


リファレンスでは、cvWaitKey()はタイムアウトの場合-1を返すとのことなので、
else if(key == 's'){

else if(key == -1){
に書き換えれば目的の処理は達成できるのではないでしょうか。

リファレンスURL
http://opencv.jp/opencv-1.0.0/document/opencvref …
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!