Renesas Community
Renesas Community
  • User
    Join or sign in
  • Site
  • Search Community
  • User
  • Renesas Engineering Community
  • FAQ
  • HELP
  • More
  • Cancel
がじぇっとるねさすコミュニティ
がじぇっとるねさすコミュニティ
GR-LYCHEE OpenCV MatchTemplateでエラーになる
  • Forums
  • Files
  • がじぇっとるねさす ゆーざー会 - Wiki
  • Tags
  • More
  • Cancel
  • New

 

 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関連

 女子美コラボ

 その他

 ※プロデューサミーティング中

 作り方使い方資料

 イベント関連

 作品記事

 体験記事

 その他

 

 ライブラリ

 ツール

 その他・過去ファイル

  • State Not Answered
  • Replies 5 replies
  • Subscribers 438 subscribers
  • Views 6904 views
  • Users 0 members are here
Options
  • Share
  • More
  • Cancel
Related Tags
  • 5Vトレラント
  • binファイル
  • BLE
  • DisplayApp
  • e2studio
  • error
  • ESP32
  • GR-LYCHEE
  • GR-PEACH
  • html
  • includeに関しては、C言語のヘッダファイルの意味合いを理解すれば、どういうことなのか?がわかるんじゃないか?と思いますよ。
  • OpenCV
  • pwm
  • WebCamera
  • webコンパイラ
  • カメラ
  • コンパイラー
  • シリアル
  • ダウンロード
  • ツールチェン
  • ファームウェア
  • 基板サイズ
  • 解凍
Related

OpenCV MatchTemplateでエラーになる

sato
sato over 4 years ago

LYCHEEでOpenCVを試していますが、mathTemplate内でエラーになってしまい、行き詰っています。

ソースは下記を使っています。

最初はメモリを疑い読み込む画像サイズをかなり小さくしましたがうまくいきませんでした。

環境はIDE for GR1.05でopencvのライブラリは入れなおしています。

 

#include <Arduino.h>
#include <Camera.h>
#include <LCD.h>
#include <opencv.hpp>
#include "SdUsbConnect.h"

using namespace cv;

SdUsbConnect storage("storage");
LCD lcd;
static uint8_t work_buf[BYTE_PER_PIXEL_YUV * 640 * 480];
void setup() {
 double  minVal, maxVal;
 Point  minLoc, maxLoc;
 Mat  tmp;
 Mat  res;

 Serial.begin(115200);
 pinMode(PIN_LED_YELLOW, OUTPUT);
 pinMode(PIN_LED_RED, OUTPUT);
 pinMode(PIN_LED_GREEN, OUTPUT);
 digitalWrite(PIN_LED_YELLOW, HIGH);
 // SD & USB
 Serial.print("Finding strage..");
 storage.wait_connect();
 Serial.println("done");

 Serial.println("Target Load");
 Mat image = imread("/storage/target.jpg", 0);
 if (!image.empty()) {
   Mat tmp = imread("/storage/tmp.img", 0);

   matchTemplate(image, tmp, res, 3/*CV_TM_CCORR_NORMED*/);
   minMaxLoc(res, &minVal, &maxVal, &minLoc, &maxLoc);
 
   cvtColor(image, image, COLOR_GRAY2BGR);   // 枠線を書くためにカラーに戻す
   Rect rect;
   rect = Rect(maxLoc, tmp.size());

   rectangle(image, rect, Scalar(0, 255, 0), 2);
 
   digitalWrite(PIN_LED_GREEN, HIGH);
 }

 lcd.begin(work_buf, image.cols, image.rows);
 lcd.clear();
 lcd.BGR2YUV(image.data, work_buf, image.cols, image.rows);
}

void loop() {
}

  • Reply
  • Cancel
  • Cancel
  • sato
    0 sato over 4 years ago
    なんかおかしくなってるので追記します。
    文中最初にある’B’がテンプレート、 ’ABCDEFG’が検索画像です
    • Cancel
    • Up 0 Down
    • Reply
    • Verify Answer
    • Cancel
  • Okamiya Yuuki
    0 Okamiya Yuuki over 4 years ago in reply to sato
    いまいちよく分かってないのですが、tmp.imgという形式を読み込みるかが分かりません。tmp.imgをjpgとかbmpに変換するとどうなのでしょうか。
    • Cancel
    • Up 0 Down
    • Reply
    • Verify Answer
    • Cancel
  • sato
    0 sato over 4 years ago in reply to Okamiya Yuuki
    タイプミスをしていました。tmp.jpgに直してみましたが、やはりエラーが出ます。
    OpenCV Error: Insufficient memory (Failed to allocate 262144 bytes) in OutOfMemoryError, file ../core/src/alloc.cpp, line 52
    OpenCV Error: Assertion failed (u != 0) in create, file ../core/src/matrix.cpp, line 433
    matchTemplate内でエラーになっているようです
    • Cancel
    • Up 0 Down
    • Reply
    • Verify Answer
    • Cancel
  • Okamiya Yuuki
    0 Okamiya Yuuki over 4 years ago in reply to sato
    メモリが足りていないようです。
    GR-LYCHEEのRAMは3MBですが、その内1MBは非キャッシュ領域に割り当てられているため、下記サイトの下の方に書いてある通り、使うと割っているバッファはスタティックに配置した方がいいです。
    gadget.renesas.com/.../8.html

    例で言いますと、まずLCDは480x272のため以下のように、サイズ変更と属性指定をしてください。
    uint8_t work_buf[2 * 480 * 272] __attribute((section("NC_BSS"),aligned(32)));

    次に、テンプレートマッチを行うためにSDから読んでくる画像エリアもスタティックでよいと思いますので、下記のバッファを定義し、
    uint8_t bgr_buf[3 * 480 * 272]__attribute((section("NC_BSS"),aligned(32)));
    以下のようにMatオブジェクトを作ってください。
    Mat image(272, 480, CV_8UC3, bgr_buf);
    テンプレートも同じように定義した方がよいと思います。

    上記三か所を非キャッシュに配置することで、ある程度のメモリ確保はできますが、肝心のmatchTemplateで動的メモリをたくさん使う可能性があります。またinsufficient memoryのエラーが出た場合は、全体的にマッチングを行う画像サイズを減らすことをお試しください。
    • Cancel
    • Up 0 Down
    • Reply
    • Verify Answer
    • Cancel
  • sato
    0 sato over 3 years ago in reply to Okamiya Yuuki
    ありがとうございました。時間ができたら試してみたいと思います。
    • Cancel
    • Up 0 Down
    • Reply
    • Verify Answer
    • Cancel
サイト使用条件
プライバシーポリシー
お問い合わせ
© 2010-2022 Renesas Electronics Corporation. All rights reserved.