fc2ブログ

Pi NoIR Camera V2で遊ぶ(3)

 前回までで、赤外線カメラPi NoIR Camera V2をOpenCVでも使える状態にしましたので、今回は実際にコードを書いて動かしてみます。このサイトにあるサンプルプログラム(simpletest_raspicam_cv.cpp )を一部変更して、以下のプログラムraspicam_cv_samp.cppを作成しました。

//raspicam_cv_samp.cpp
#include <ctime>
#include <iostream>
#include <raspicam/raspicam_cv.h>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace std;

int main (int argc,char **argv) {

time_t timer_begin,timer_end;

raspicam::RaspiCam_Cv Camera;
cv::Mat image;
int nCount=100;

//set camera params
//Camera.set(CV_CAP_PROP_FORMAR, CV_8UC1); //monochrome
Camera.set(CV_CAP_PROP_FORMAT, CV_8UC3); //color

//Open camera
cout<<"Opening Camera..."<<endl;
if (!Camera.open()) {cerr<<"Error opening the camera"<<endl;return -1;}

//Start capture
cout<<"Capturing "<<nCount<<" frames ...."<<endl;
time (&timer_begin);
for (int i=0; i<nCount; i++) {
Camera.grab();
Camera.retrieve (image);
if (i%5==0) cout<<"\r captured "<<i<<" images"<<std::flush;
}
cout<<"Stop camera..."<<endl;
Camera.release();

//show time statistics
time (&timer_end); /* get current time; same as: timer = time(NULL) */
double secondsElapsed = difftime (timer_end,timer_begin);
cout<< secondsElapsed<<" seconds for "<< nCount<<" frames : FPS = "<< (float) ((float)(nCount) /secondsElapsed) <<endl;

//image proc
cv::Mat grayimage;
cv::Mat thresholdimage;
cv::cvtColor(image, grayimage, CV_RGB2GRAY); //Monochrome
cv::threshold(grayimage, thresholdimage, 128, 255, cv::THRESH_BINARY); //Binarize

//save image
cv::imwrite("raspicam_cv_image.jpg",image);
cout<<"Image saved at raspicam_cv_image.jpg"<<endl;
cv::imwrite("raspicam_cv_grayimage.jpg",grayimage);
cout<<"Image saved at raspicam_cv_grayimage.jpg"<<endl;
cv::imwrite("raspicam_cv_thresholdimage.jpg",thresholdimage);
cout<<"Image saved at raspicam_cv_thresholdimage.jpg"<<endl;
}
 元々は100枚のモノクロ画像を撮影して、フレームレートを求め、その画像を保存するプログラムでした。今回は、カラー画像を撮像して、フレームレートと、撮像画像をグレー処理、二値化処理し、それらの画像を保存するプログラムに変更しました。
 このソースプログラムは、~/git/raspicam/utils/フォルダに保存し、以下のCMakeLists.txtも同じフォルダに保存しました。

cmake_minimum_required (VERSION 2.8)
project (sample)
find_package(raspicam REQUIRED)
find_package(OpenCV)
IF ( OpenCV_FOUND AND raspicam_CV_FOUND)
MESSAGE(STATUS "COMPILING OPENCV TESTS")
add_executable (raspicam_cv_samp raspicam_cv_samp.cpp)
target_link_libraries (raspicam_cv_samp ${raspicam_CV_LIBS})
ELSE()
MESSAGE(FATAL_ERROR "OPENCV NOT FOUND IN YOUR SYSTEM")
ENDIF()
作業フォルダ~/git/raspicam/utils/で以下のコマンドを実行し、exeファイルを作成しました。
  cmake .
  make
exeファイル「raspicam_cv_samp」は、~/git/raspicam/utils/utils/内に作成されました。以下のコマンドでプログラムを実行させました。
  sudo ./raspicam_cv_samp

結果は、以下の通りでした。画像は上から、生カラー画像、グレー画像、二値化画像です。
result_161120.pngraspicam_cv_image_161120.jpgraspicam_cv_grayimage_161120.jpgraspicam_cv_thresholdimage_161120.jpg フレームレートは、9.09091[fps]で、画像もきちんと処理されて保存されていました。何かと使えそうです。
スポンサーサイト



コメント

非公開コメント

ご訪問者数

(Since 24 July, 2016)

タグクラウド


プロフィール

Dr.BobT

Author: Dr.BobT
興味のおもむくままに生涯考え続けるエンジニアでありたい。

月別アーカイブ

メールフォーム

名前:
メール:
件名:
本文: