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関連
女子美コラボ
その他
※プロデューサミーティング中
作り方使い方資料
イベント関連
作品記事
体験記事
ライブラリ
ツール
その他・過去ファイル
Ver1.02になりOpenCVができるようになりOpenCVの勉強始めました。検索すると色々とサンプルプログラムが出てきますがIDE for GRにあるスケッチの例の記述とくらべると少し異なるようですが記述の参考になるサイトや資料などありましたらお教えください
IDE for GRの活用ありがとうございます。具体的に異なる点はどんなところですかね?
私自身は以下の本「実践OpenCV3 for C++画像映像情報処理」で勉強をしつつ、今回のサンプルの参考にさせていただきました。回し者ではないですが、非常に分かりやすい解説本でした。
http://shop.tsutaya.co.jp/book/product/9784877833800/
基本的にGR-PEACH用のOpenCVは99%はGithubソースから構築されてますので、Version 3.2であれば基本的に一般に公開されているサンプルは動くのですが、
https://github.com/d-kato/opencv-lib
RZ/A1の仕様上「カメラ入力はYCbCr422」「JPEG圧縮はYCbCr422」である点が、一般のサンプルとIDE for GRのサンプル記述が異なってくることにつながっていると思っているような気がしてます。GR-PEACH/LYCHEEではYCbCr422→BGR888(あるいはGRAY)→YCbCrが必須の流れになり、一般のサンプルには不要な変換です。サンプルではすぐに結果が見える形にしたいため、PCに表示/SDに保存のどちらかになると思いますが、そもそも一般のサンプル(Windows用とか)ではimshow一行でPCに表示できます。
OpenCVでの画像処理のサンプルの多くは例えばPNG画像などを読み込んで、BGR888で行われてますが、GR-PEACHの場合YCbCr422のため、BGR888かGRAYに変換します。しかし、BGR888はメモリ消費量が大きく(単純に640x480だと、画像データだけで900Kバイト)、OpenCVのAPIでメモリ不足のエラーになることが多かったです。このため、以下の記載はGR-PEACH/LYCHEE特有といえば特有で、一般のサンプルにはほとんどない処理です。
Mat img_raw(IMAGE_VW, IMAGE_HW, CV_8UC2, camera.getImageAdr());
cvtColor(img_raw, src, COLOR_YUV2GRAY_YUYV); // //covert from YUV to GRAY
ちなみに、今回のサンプル構築の際に苦労したのはBGR888/GRAYからYCbCr422にするOpenCV変換はVersion3.2の時点では存在しなかったことです。YCbCr444はできます。cvtColorの処理結果を、J-LINKエミュレータを使ってメモリを見た結果がそうでした。このため、CameraライブラリにJPEG変換の際、ソフトでYCbCr422に変換する処理を追加してます。