概要
今年のみんなのラズパイコンテスト2017でソニーセミコンダクタソリューションズさんの「IU233」をお借りすることができました.
IU233をラズパイで動かす手順については,「ビジョンプロセッシング・コミュニティ」にて説明がなされているのですが,これを実際にプログラムに組み込んで使用するためにOpenCV上からアクセスすることを目指してトライしてみました.
前回までのあらすじ
USB接続での画像取得はある程度見えてきました。しかし、cv::Matを使ったcpp的なやり方だとカメラの解像度をコントロールすることもできない状態でした。
今想定しているガジェットはUSBでコントロールできるのならそれでもいいんですが、高速シャッターとしての機能が欲しいのと、できれば高速動画も使えたら嬉しいなと思っているので、CSIで使う方法になるんじゃないかな、となんとなく思っています。
色々とフォーラムにも書き込んで、ここでもやっぱりSSPを介してやるのが良さそうなので、
SSPを使ってトライ。
Highsspeedを試す
ダウンロードサイトにHighspeed撮影のサンプルがあったので、これをダウンロード。
readmeにあるように、フォルダの位置を決めて「highspeed」にリネーム。
makeしたらコンパイルできるというが。。。。
highspeed.c:78:1: error: unknown type name ‘CvVideoWriter’
って怒られる。
CPPベースのサンプル「FaceDetection」を試す
最初はviewersampleGainを試していたんだけれど、C系だったのでなかなかうまくいかず、CPP系のFaceDetectionをベースにチェック。
カメラはIU233決め打ちなので、該当部分以外削除
fame_preprocess 内の
// Detect faces
std::vector<Rect> faces;
face_cascade.detectMultiScale( RGBSmallImg, faces, 1.1, 2, 0|CV_HAAR_SCALE_IMAGE, Size(30, 30) );
for( i = 0; i < faces.size(); i++ )
{
//Point center( faces[i].x + faces[i].width*0.5, faces[i].y + faces[i].height*0.5 );
Point lefttop ( faces[i].x*((float)1/resize_ratio), faces[i].y*((float)1/resize_ratio));
Point rightbottom ( (faces[i].x + faces[i].width)*((float)1/resize_ratio),
(faces[i].y + faces[i].height)*((float)1/resize_ratio));
cvRectangle( RGBImg, lefttop, rightbottom, Scalar( 255, 0,0 ), 1);
// ellipse( image, center, Size( faces[i].width*0.5, faces[i].height*0.5), 0, 0, 360, Scalar( 255, 0, 255 ), 4, 8, 0 );
}
部分を削除して、シンプルなフレームカメラモードにしました。
結果がこれ
画像は取れていますが45FPSくらい。
まだシャッター速度やFPSは変更できていないけれど、
これでopencvに入れ込むことはできました。