Raspberry PI3 でソニーセミコンダクタソリューションズのIU233をSSP+OpenCV経由で動かす③ IU233をCSIから撮影

概要

今年のみんなのラズパイコンテスト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 );
    }

部分を削除して、シンプルなフレームカメラモードにしました。
結果がこれ
スクリーンショット 2017-08-10 13.52.55.png

画像は取れていますが45FPSくらい。

まだシャッター速度やFPSは変更できていないけれど、
これでopencvに入れ込むことはできました。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.