Raspberry PiでOpenCV
Raspberry Piを買ったものの、しばらく放置していた。何か遊び方を見つけていくために、手始めにOpenCVでWebカメラの画像を取り込んで表示するプログラムを作ってみた。
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
やや処理が遅いが、カメラの映像をちゃんと取り込める。
実行直後、以下のエラーがコンソールに10回程度出るが、一応動作している。。。
VIDIOC_QUERYMENU: Invalid argument
プログラムの中でフレームサイズを160x120と指定すれば、より滑らかに取り込める。
とりあえずここまで。。。もう少し面白いアプリケーションを考えていきたい。