"raspistill"コマンドのソースが公開されているので、それらを解析して、画像取得部分を取り出さないとダメなのかなぁ?面倒だなぁ?なんて躊躇している間に、世の中にはさっさとやってくれている人がいらっしゃいました。他力本願ですが、こちらのサイトで公開されている資料やソースをそのままコピー&ダウンロードして、使わせて頂くことにしました。
ただ、開発環境の方は、先日から評価版インストールでお試し中のVisualGDBです。頂いてきたソースをそのままWindows上のViisualGDBのプロジェクトに登録して、Makefile settingsの部分を環境に合わせて(include,libのパスと使用するlibの設定)、SSH接続でのRaspberry Pi上でのコンパイルで実行してみました。
プロジェクトの構成はこんな感じ。
Makefileの設定。
includeパス。
libraryパス。
library。
で、ビルドして実行してみました。
サンプルはOpenCVのcvWindowで画像を表示して、ファイルfoobar.bmpに保存するような内容ですが、その通りの動作(当たり前か?)です。実際のOpenCVのコードが書かれている部分をステップ実行で探したところ、camcv.c の encoder_buffer_callback関数内で行われていました。1フレームのデータが取得されてエンコードされたあとに呼び出されるような関数でしょうか?その中でOpenCVの処理を行っています。この部分に顔検出やらそのほかのOpenCVの処理を追加していけばいいのだと思うのですが、raspstillコマンドのソースを元にしているためもあって、全体のコードがやりたいことに対して大きくなってしまいますね。もう少しシンプルにcameraモジュールを使う方法があるといいんですけど。他のUSB webcamみたいにOpenCVで扱えるといいんですが・・・。
なんか、この感じだと、専用cameraモジュールを使うよりもUSB webcam使ったほうが、Raspberry Piから少し離れたところへの引き回しや固定(専用cameraモジュールは15cmくらいのリボンケーブルで基板むき出し)しやすいし、ソフトウェア的にもOpenCVが素直に認識してくれれば(最近のUSB webcamならUVC対応で、たいがい認識してくれるだろう)、全然楽な気がしてきました。う~ん、使い道が・・・。
0 件のコメント:
コメントを投稿