Archives

All posts for the month 1月, 2017

RaspberryPi用のカメラモジュールとしてSWITCHSIENCEのPiNoir V2がありますので、今回はこれを使用します。

プログラムを作成するうえで使うライブラリとしてRaspiCam C++ APIを使います。
AVA
から最新版を取得しインストールしてください。

あと、OpenCVを
# apt-get install libopencv-dev
でインストールしてください。

必要モジュールのインストールが終わったら、ソースを作りましょう。
test.cpp

#include <stdio.h>
#include <ctime>
#include <iostream>
#include <raspicam/raspicam_cv.h>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"

using namespace std; 
using namespace cv;

int main ( int argc,char **argv ) {
    raspicam::RaspiCam_Cv Camera;
    Mat image;

    //set camera params
    Camera.set( CV_CAP_PROP_FORMAT, CV_8UC3 ); //カラー
    Camera.set( CV_CAP_PROP_BRIGHTNESS, 50);
    Camera.set( CV_CAP_PROP_GAIN, 80);
    Camera.set( CV_CAP_PROP_FRAME_WIDTH, 640);
    Camera.set( CV_CAP_PROP_FRAME_HEIGHT, 400);
 
    //Open camera
    if (!Camera.open()) {cerr<<"Error opening the camera"<<endl;return -1;}

    // **************************************************
    //display image
    // **************************************************
    const char szWindow[] = "Image Data";
    namedWindow(szWindow, cv::WINDOW_AUTOSIZE);

    // **************************************************
    // イメージの取得
    // **************************************************
    Camera.grab();
    Camera.retrieve ( image);

    // **************************************************
    //save image 
    // **************************************************
    cv::imwrite("test2.bmp",image);

    // **************************************************
    // イメージの表示
    // **************************************************
    imshow(szWindow, image);
 
    // **************************************************
    // wait
    // **************************************************
    waitKey();
 
    Camera.release();
}

下記コマンドでコンパイルすればあとは実行あるのみ。


g++ test.cpp -o test2 -I/usr/local/include/ -lraspicam -lraspicam_cv -lmmal -lmmal_core -lmmal_util -lopencv_core -lopencv_highgui -L/opt/vc/lib

ちょっと画面が汚いですが写真が撮れます。
OpenCVとあわせて色々使ってみましょう。