OpenCV
snippet
C言語

[OpenCV] カメラ画像を表示(C言語)

#include <stdio.h>
#include <string.h>
#include <ctype.h>

#include <cv.h>
#include <highgui.h>

//#define FULL_SCREEN   //フルスクリーンにする

#define CAP_WIDTH 640
#define CAP_HEIGHT 480

#define FRAME_WAIT 30

#define WIN_NAME "Capture"

//============================================================

int main(int argc, char *argv[]) {
    //キャプチャ構造体
    CvCapture *capture = 0;
    //イメージ構造体
    IplImage *frame = 0;

    int inp_key;

    //------------------------------

    //カメラに対するキャプチャ構造体を作成。
    if (argc == 1 || (argc == 2 && strlen(argv[1]) == 1 && isdigit(argv[1][0])))
        capture = cvCreateCameraCapture(argc == 2 ? argv[1][0] - '0' : 0);

    //キャプチャサイズの設定
    cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH, CAP_WIDTH);
    cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT, CAP_HEIGHT);

    //------------------------------
    // ウィンドウ作成

#ifdef FULL_SCREEN
    //生成
    cvNamedWindow(WIN_NAME, 0);
    //フルスクリーン
    cvSetWindowProperty(WIN_NAME, CV_WND_PROP_FULLSCREEN, CV_WINDOW_FULLSCREEN);
#else
    //生成
    cvNamedWindow(WIN_NAME, CV_WINDOW_AUTOSIZE);
#endif

    //------------------------------
    //ループ

    while(1)
    {
        // 1フレームキャプチャ
        frame = cvQueryFrame(capture);

        //表示
        cvShowImage(WIN_NAME, frame);

        //キー待ち
        inp_key = cvWaitKey(FRAME_WAIT);

        //入力あり?
        if (inp_key >= 0) {
            // [ESC] or 'Q' or 'q'
            if (inp_key == 27 || inp_key == 81 || inp_key == 113) break;
        }
    }

    //------------------------------
    //後処理

    //キャプチャ変数解放
    cvReleaseCapture(&capture);
    //ウィンドウ破棄
    cvDestroyWindow(WIN_NAME);

    return 0;
}