がじぇっとるねさす

ホビーとエレクトロニクスを繋げるサイト

アイテム

TOPへ

GR-LYCHEE 特設

OpenCVの応用 輪郭検出、HSV色空間

概要

OpenCVの応用例として、今回はAhmet Yaylaliogluさんの「指を数える」という例をGR-LYCHEEで実行してみます。輪郭検出や凹凸の検出、HSV色空間を利用した肌色検出などを応用した例です。

留意:GR-LYCHEEに搭載されているRZ/A1LUはRAMが3MBですので、処理できることは限定されてきます。また、ROMに書き込むメモリも大きくなり、書込み時間が30秒ぐらいに長くなりますので、その点はご留意ください。

準備

ハードウェア

GR-LYCHEE、USBケーブル(マイクロBタイプ)を準備します。カメラの取り付け方はこちらを参照してください。

login


ソフトウェア

DisplayAppをダウンロードして解凍してください。PCでカメラの画像を確認するためのアプリケーションです。

 

指を数える

それでは試してみましょう。以下のプログラムを実行してみてください。
プログラム書き込みには30秒ほどかかりますので、書込みが終わってMbedドライブが再認識されるまで、USBケーブルを抜いたりしないでください。


USBケーブルをGR-LYCHEEのUSB0につなぎ、DisplayAppで画像を確認します。2秒ごとにオリジナルイメージと画像処理をしているイメージが切り替わります。HSV色空間を使った肌色検出、輪郭検出、そしてconvexHull、convexityDefectsによる指のカウントがどのように行われているか分かると思います。



 

非キャッシュメモリ 1MBの使用について

GR-LYCHEEのRAM 3MBは以下のようにセクションが区切られています。MMU用テーブルが割り当てられたL_TTB領域 16KB、キャッシュのあるRAM領域 1.875MB、キャッシュのないRAM_NC領域 1MBです。
RAM_NC領域は変数や配列を定義するとき、明示的に__attribute((section("NC_BSS"),aligned(32)))を指定する必要があります。

セクション 開始アドレス サイズ 説明
L_TTB 0x20000000 0x4000(16KB) MMU用テーブル
RAM 0x20020000 0x1E0000(1.875MB) キャッシュのあるRAM領域
RAM_NC 0x20200000 0x100000(1MB) キャッシュのないRAM領域

GR-LYCHEEのライブラリを使用した場合、変数や配列の定義で確保されるメモリ以外は、HEAPとしてMalloc等の動的メモリ確保に使用されます。RAM_NC領域1MBを活用するための手段として、本ページのサンプルを参考にしてください。

 

share