読者です 読者をやめる 読者になる 読者になる

danglingfarpointer's memoization

仕事周りでの気付き、メモ、愚痴などを書いていきます。

Raspberry PiでOpenCV

Raspberry Piを買ったものの、しばらく放置していた。何か遊び方を見つけていくために、手始めにOpenCVWebカメラの画像を取り込んで表示するプログラムを作ってみた。

Web Cam.

LogitechのC270というWeb Camを調達。USBに差し込んでRaspberry Piを起動すれば、自動で認識された。

$ lsusb
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. 
Bus 001 Device 004: ID 046d:0825 Logitech, Inc. Webcam C270 #### <- Web Cam

OpenCVのインストール

現在のRaspbianのapt-getからは、やや古いが2.3がインストールできる。

$ sudo apt-get install libopencv-* libopencv-*-*

プログラムを作る

camera.cpp:

#include <opencv2/opencv.hpp>

using namespace cv;

int main()
{
    // open the default camera
    VideoCapture cap(0);
    if(!cap.isOpened())
        return -1;

    // set capture size
    cap.set(CV_CAP_PROP_FRAME_WIDTH, 320);
    cap.set(CV_CAP_PROP_FRAME_HEIGHT, 240);

    Mat image;
    namedWindow("Video", CV_WINDOW_AUTOSIZE);

    while(1){
        cap >> image;
        imshow("Video", image);

        if(waitKey(30) >= 0)
            break;
    }
}

コンパイル

$ g++ camera.cpp `pkg-config --libs opencv`

実行

$ ./a.out

やや処理が遅いが、カメラの映像をちゃんと取り込める。

f:id:danglingfarpointer:20140517191119p:plain

実行直後、以下のエラーがコンソールに10回程度出るが、一応動作している。。。

VIDIOC_QUERYMENU: Invalid argument

プログラムの中でフレームサイズを160x120と指定すれば、より滑らかに取り込める。

とりあえずここまで。。。もう少し面白いアプリケーションを考えていきたい。