OpenCV+C++ カメラによる動画撮影

#include "opencv/highgui.h"
#include <stdio.h>
using namespace cv;

int main(void){
    //http://opencv.jp/opencv-1.0.0/document/opencvref_highgui_video.html
    CvCapture *camera=cvCreateCameraCapture(0);
    if(camera==NULL){
        printf("カメラが見つかりません");
        return -1;
    }

    double width=1920,height=1080;

    cvSetCaptureProperty(camera,CV_CAP_PROP_FRAME_WIDTH,width);
    cvSetCaptureProperty(camera,CV_CAP_PROP_FRAME_HEIGHT,height);

    while(cvWaitKey(1)==-1){
        //cvQueryFrameはCvCapture型の1フレームをIplImage型で返す。
        //IplImage型をMat型に変換している。(Matのほうが良いっぽい?違いが分からない)
        Mat image(cvQueryFrame(camera));
        imshow("camera",image);
    }

    cvReleaseCapture(&camera);
    cvDestroyWindow("camera");

    return 0;
}
g++ webcamera.cpp `pkg-config --cflags opencv` `pkg-config opencv --libs` -o OpenCV
./OpenCV


結果は、
f:id:alstd:20150315190142p:plain



ちなみに使ったカメラはELECOMのDLE300TBKです。
首振り機能は無いが画質は良いようです。