GR-SAKURA
GR-KURUMI
GR-COTTON
GR-CITRUS
GR-PEACH
GR-KAEDE
GR-ADZUKI
GR-LYCHEE
GR-ROSE
GR-MANGO(*)
SNShield
Web Compiler
IDE for GR
TOPPERS関連
女子美コラボ
その他
※プロデューサミーティング中
作り方使い方資料
イベント関連
作品記事
体験記事
ライブラリ
ツール
その他・過去ファイル
がじぇるね岡宮です。
OpenCVお試し用のWebコンパイラテンプレートと、e2studio用のプロジェクトを準備しました。
http://japan.renesasrulz.com/gr_user_forum_japanese/b/weblog2/posts/gr-lychee-opencv
今のところはまだ顔検出のみです。次のバージョンでは人認識と、画像への描画(四角とか)を準備しようと考えています。
何かご意見あれば、よろしくお願いいたします。
岡宮さん、OpenCVの件、ありがとうございました。
顔検出、動作できました。
こんな新聞をカメラで撮影してみました。
かなりいい感じで、検出できています。
USBの電流計は、約160mAです。CPUは、ほんのり温かい感じくらいまで、温度が上がっています。
昨年夏のルネサスナイト9で発表させて頂いた、『変顔』測定器は、Intel core i7のノートPC上でOpenCVを裏で使っていました。
この時は、CPUがガンガン回っていたのを思い出しました。たしか、VGAでは、動かなくて、QVGA( Quarter VGA 320×240:1/4VGA)でやっとだったと思います。
GR-LYCHEE基板でOpenCVが160mAくらいで動くのは、スゴイと思います。
いまやりたいのは、動画の保存です。
カメラで撮影した画像をavi、MOV等のファーマットで動画を保存させたいです。
そのあたりのOpenCVのライブラリがあれば良いと思います。
その他、動画保存の方法あれば、ご教授お願い致します。
とてもワクワクする基板ですね。今後が楽しみです。
OpenCV は ARM の SIMD 命令である NEON に対応しており、GR-LYCHEE や PEACH に搭載されている RZ/A1L や RZ/A1H のコアの Cortex-A9 には機能として搭載されている訳ですが、mbed や Arduino ライブラリの makefile ではなんでかそれを使用する設定になっておらず勿体ない感じです。
以前 GR-PEACH で確認したところでは、makefile 中のマクロ CPU の中
`-mfloat-abi=hard -mfpu=vfpv3'
の箇所を
`-mfloat-abi=hard -mfpu=neon -ftree-vectorize -mvectorize-with-neon-quad'
とすることで NEON が使えてました。
OpenCV に限らず NEON の使い道は色々と考えられ、他の mbed ボードと比べて差別化ポイントとしてアピールできると思うので、GR-PEACH も含めて対応を検討されてはいかがかと思います。
OpenCV に限らず NEON の使い道は色々とあるので GR-LYCHEE と PEACH の両方で対応を検討されてはいかがですかという提案です。 現状の OpenCV が NEON でコンパイルできないのであればコンパイルオプションで除外すれば良いだけの話であり問題とはならない筈です。
私もOpen-CV試してみました。
最初、使い方が分からず苦労しましたのでメモしておきます。
1.Webコンパイラでビルドしたバイナリを書き込む。
2.カメラの向きに気を付けて、検出結果は右のポートを9600bpsでターミナル接続
3.左のポートは、例のDisplayAppで画像を見ることができます。
4.なんとなく、検出されているようですが分かり難いので、アプリを作りました。
5.みんな大好き岡宮氏を認識させた結果です。
※こちらのサイトで紹介されています。親子でロボットを「覚醒」させよう!昆虫ロボット作成イベントが開催
提供いただいたDisplayAppは、C++で書かれているのですが、
私はC#が好きなので書き換えてオーバーレイできるようにしてみました。
要望あれば公開します。だた、DTRのせい?で止まることがあるんですよねぇ。
インストーラはありませんが、ひとまずアップロードしてみました。
詳しくは、ReadMe.txtを参照してください。(いまのところWindows版のみ)
GR-LYCHEE_Display_20170501.zip
こんな感じで表示されるはずです。
こんな感じでどうでしょう?
#if (DBG_CAPTURE == 1) //save jpeg image size_t jpeg_size = create_jpeg(); display_app.SendJpeg(get_jpeg_adr(), jpeg_size); sprintf(file_name, "/storage/color_%d.jpg", file_name_index_detected); FILE *fp = fopen(file_name, "w"); fwrite(get_jpeg_adr(), jpeg_size, 1, fp); fclose(fp); sprintf(file_name, "/storage/detected_%d.bmp", file_name_index_detected++); imwrite(file_name, frame_gray);#endif
白黒とカラーの両方保存されます。
まだOpenCVライブラリの利用方法が公開されていませんが、勉強がてら使ってみました。カラー画像の方に顔認識結果の四角を書いてjpegで出力するというだけですが、結構大変でした。
※画像マズければ消します
カメラからキャプチャしたYUV422データにはcv::rectangleで四角が書けなかったので、一旦cv::cvtColorでBGR888に変換してからcv::rectangleしました。で、JCUの入力もYUV422なのですが、OpenCVのcv::cvtColorではBGR888からYUV422に変換できないので、結局自力でYUV422変換してJCUに渡してます。
この辺簡単にできると良いですね。(ここでNEON使って欲しい)