Renesas Rulz - Japan
Renesas Rulz - Japan
  • User
    Join or sign in
  • Site
  • Search Japan.RenesasRulz.com
  • User
  • Renesas Rulz
  • FAQ
  • パートナー
  • 半導体セミナ
  • eラーニング
  • ヘルプ
  • More
  • Cancel
  • かふぇルネ
  • がじぇるね
  • English Community
  • More
  • Cancel
がじぇっとるねさすコミュニティ
がじぇっとるねさすコミュニティ
GR-KAEDE ImageライブラリのmovingDetection機能しない
  • Forums
  • Blog
  • 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 6 replies
  • Subscribers 436 subscribers
  • Views 8545 views
  • Users 0 members are here
  • GR-KAEDE
  • KAEDE
Options
  • Share
  • More
  • Cancel
Related Tags
  • GR-KAEDE
  • KAEDE
  • USB Renesas Flash Programmer RFP .mot usbfirm
Related

ImageライブラリのmovingDetection機能しない

ash
ash over 3 years ago

2016年末にGR-KAEDE, CMOSカメラモジュールを購入しました。
テンプレートライブラリGR-KAEDE_Sketch_V121を基にして動体検出して画像をSDカードに保存するサンプルプログラムをコンパイルし実行したところ、プログラムが動きませんでした。調べたところmovingDetection関数が呼ばれたところで固まっていました(当関数を除けば画像キャプチャ、画像保存はできる)。当バージョンのライブラリに不具合などはございませんでしょうか。どうぞよろしくおねがいします。

  • Reply
  • Cancel
  • Cancel
Parents
  • Okamiya Yuuki
    0 Okamiya Yuuki over 3 years ago

    がじぇるね岡宮です。

    ashさん、ご回答遅くなりすみません。

    おそらくなのですが、購入時に書き込まれているべき画像認識ファームが、製造時のどこかの工程で書き込まれていないか、消去されたかだと思うのですが、添付のファームウェアを以下の秋月さんのWebに掲載されている手順で書き込んでいただけますでしょうか。

    http://akizukidenshi.com/download/ds/renesas/GR-KAEDE_USB_Farm.pdf

     

    なお、私が記載できる範囲での基本的なメモリ構成は以下です。

    0xFFC00200 ->画像認識ライブラリのテーブルなど(★ここが消えている可能性大)

    0xFFC10000 ->ユーザーアプリ分岐用

    0xFFC20100 ->検査用

    0xFFE00000 ->画像認識ライブラリ(トラステッドメモリのため消せません、見えません)

    0xFFFD0000 ->USBマスストレージファーム

     

    念のためですが、GR-KAEDE用スケッチテンプレートに画像認識ライブラリの初期化かからきちんと帰ってくるか確認するだけのプログラムを以下に記載します。LEDがチカチカしたらファームがきちんと存在しています。Mdl_IP_Initから帰ってくるかどうかが焦点です。

    #include <Arduino.h>
    #include <Image.h>

    #define INTERVAL 100

    void setup()
    {
    Serial.begin(9600);
    pinMode(PIN_LED0,OUTPUT);
    pinMode(PIN_LED1,OUTPUT);
    pinMode(PIN_LED2,OUTPUT);
    pinMode(PIN_LED3,OUTPUT);

    initialize_sdram();
    Mdl_IP_Init( (uint8_t*)IMG_BUF_BASE_ADDR );


    }

    void loop()
    {
    Serial.println("hello");
    delay(100);

    digitalWrite(PIN_LED0, 1);
    delay(INTERVAL);
    digitalWrite(PIN_LED1, 1);
    delay(INTERVAL);
    digitalWrite(PIN_LED2, 1);
    delay(INTERVAL);
    digitalWrite(PIN_LED3, 1);
    delay(INTERVAL);
    digitalWrite(PIN_LED0, 0);
    delay(INTERVAL);
    digitalWrite(PIN_LED1, 0);
    delay(INTERVAL);
    digitalWrite(PIN_LED2, 0);
    delay(INTERVAL);
    digitalWrite(PIN_LED3, 0);
    delay(INTERVAL);

    }

    • Cancel
    • Up 0 Down
    • Reply
    • Verify Answer
    • Cancel
  • fujita nozomu
    0 fujita nozomu over 3 years ago in reply to Okamiya Yuuki
    webコンパイラでの GR-KAEDE のコンパイルオプションがいまだに `最適化なし' になっていますが、この辺りまだ改善されないのでしょうか?
    最適化を指定するとライブラリの動作に不具合を来すということだった気がしますが、ちょっと放置期間が長い気がしますね。
    • Cancel
    • Up 0 Down
    • Reply
    • Verify Answer
    • Cancel
  • Okamiya Yuuki
    0 Okamiya Yuuki over 3 years ago in reply to fujita nozomu
    ご対応遅れてすみません、白とびの件、ちょっとデバッグします。少しお時間ください。
    最適化の件もすみません。Rev2ボードができ次第でライブラリ全般を見直そうと思っていましたが、滞っていますね。それも含めて検討を進めたいと考えています。
    • Cancel
    • Up 0 Down
    • Reply
    • Verify Answer
    • Cancel
  • Okamiya Yuuki
    0 Okamiya Yuuki over 3 years ago in reply to Okamiya Yuuki

    白とびの件、試してみました。再現するときと再現しないときがあり、いまいち分かっていませんが、OV7740のAWB(オートホワイトバランス)が関係しているのではないかと思っています。

    OV7740のパラメータを変えるとAPIを用意しておらずすみませんが、以下はパラメータを変更してためした結果です。SDに入れて確認するのが面倒だと思いますので、USBに送信して確認するアプリと、サンプルプログラムを文末に貼り付けます。OV7740のパラメータはImageライブラリのutlityフォルダ内ov7740.hにあります。すみません、私もよくわかってませんが、AWBのON/OFF設定はアドレス0x80で設定するのですが、設定個所が2か所あり、下の方にある0x80を変更すると適用されます。(次版では不要な設定は削除しようと思います。)

    ●Webコンパイラのデフォルト(OV7740 0x80 0x7F)

    ●AWBをOFF (OV7740 0x80 0x6F)

    ●AWB OFF+AWB gain OFF

    ●AWB OFF + AWB gain OFF + 動体検知

     


     

    USB CDCでJPEGを送ってリアルタイムに画像を表示するアプリ(Windows)。

    起動して、USBポートを指定すると画像が表示されます。

     


     

    写真だけ送る

    #include <Arduino.h>
    #include "Image.h"
    #include "SD.h"
    #include "RTC.h"

    Image image;
    void setup(){
    Serial.begin(57600);
    image.begin();

    }
    void loop(){
    uint8_t headder_data[12] = {0xFF,0xFF,0xAA,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};


    image.captureStart();
    while(!image.isCaptureFinished());
    image.createJpg();
    uint8_t* adr = image.getCreatedJpg();
    int32_t size = image.getCreatedJpgSize();
    headder_data[8] = (uint8_t)((int32_t)size >> 0);
    headder_data[9] = (uint8_t)((int32_t)size >> 8);
    headder_data[10] = (uint8_t)((int32_t)size >> 16);
    headder_data[11] = (uint8_t)((int32_t)size >> 24);

    for (int i = 0; i < sizeof(headder_data); i++){
    Serial.write(headder_data[i]);
    }
    for (int i = 0; i < size; i++){
    Serial.write(*adr);
    adr++;
    }

    }

     

     


     

    動体検知込みで送る

    #include <Arduino.h>
    #include "Image.h"
    #include "SD.h"
    #include "RTC.h"

    Image image[3];
    void setup(){
    Serial.begin(57600);
    image[0].begin();

    }
    void loop(){
    uint8_t headder_data[12] = {0xFF,0xFF,0xAA,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
    static int cnt = 0;

    while(cnt < 2){ //necessary at least two image in the past.
    image[cnt].captureStart();
    while(!image[cnt].isCaptureFinished());
    image[cnt].createGrayImage();
    cnt++;
    }

    image[cnt%3].captureStart();
    while(!image[cnt%3].isCaptureFinished());
    image[cnt%3].createGrayImage();
    // Moving detection
    if( 0 == image[cnt%3].movingDetection(image[(cnt-2)%3].getCreatedGrayImage(), image[(cnt-1)%3].getCreatedGrayImage())){
    //do nothing
    }
    image[cnt%3].createJpg();
    uint8_t* adr = image[cnt%3].getCreatedJpg();
    int32_t size = image[cnt%3].getCreatedJpgSize();
    headder_data[8] = (uint8_t)((int32_t)size >> 0);
    headder_data[9] = (uint8_t)((int32_t)size >> 8);
    headder_data[10] = (uint8_t)((int32_t)size >> 16);
    headder_data[11] = (uint8_t)((int32_t)size >> 24);

    for (int i = 0; i < sizeof(headder_data); i++){
    Serial.write(headder_data[i]);
    }
    for (int i = 0; i < size; i++){
    Serial.write(*adr);
    adr++;
    }
    cnt++;

    }

    • Cancel
    • Up 0 Down
    • Reply
    • Verify Answer
    • Cancel
Reply
  • Okamiya Yuuki
    0 Okamiya Yuuki over 3 years ago in reply to Okamiya Yuuki

    白とびの件、試してみました。再現するときと再現しないときがあり、いまいち分かっていませんが、OV7740のAWB(オートホワイトバランス)が関係しているのではないかと思っています。

    OV7740のパラメータを変えるとAPIを用意しておらずすみませんが、以下はパラメータを変更してためした結果です。SDに入れて確認するのが面倒だと思いますので、USBに送信して確認するアプリと、サンプルプログラムを文末に貼り付けます。OV7740のパラメータはImageライブラリのutlityフォルダ内ov7740.hにあります。すみません、私もよくわかってませんが、AWBのON/OFF設定はアドレス0x80で設定するのですが、設定個所が2か所あり、下の方にある0x80を変更すると適用されます。(次版では不要な設定は削除しようと思います。)

    ●Webコンパイラのデフォルト(OV7740 0x80 0x7F)

    ●AWBをOFF (OV7740 0x80 0x6F)

    ●AWB OFF+AWB gain OFF

    ●AWB OFF + AWB gain OFF + 動体検知

     


     

    USB CDCでJPEGを送ってリアルタイムに画像を表示するアプリ(Windows)。

    起動して、USBポートを指定すると画像が表示されます。

     


     

    写真だけ送る

    #include <Arduino.h>
    #include "Image.h"
    #include "SD.h"
    #include "RTC.h"

    Image image;
    void setup(){
    Serial.begin(57600);
    image.begin();

    }
    void loop(){
    uint8_t headder_data[12] = {0xFF,0xFF,0xAA,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};


    image.captureStart();
    while(!image.isCaptureFinished());
    image.createJpg();
    uint8_t* adr = image.getCreatedJpg();
    int32_t size = image.getCreatedJpgSize();
    headder_data[8] = (uint8_t)((int32_t)size >> 0);
    headder_data[9] = (uint8_t)((int32_t)size >> 8);
    headder_data[10] = (uint8_t)((int32_t)size >> 16);
    headder_data[11] = (uint8_t)((int32_t)size >> 24);

    for (int i = 0; i < sizeof(headder_data); i++){
    Serial.write(headder_data[i]);
    }
    for (int i = 0; i < size; i++){
    Serial.write(*adr);
    adr++;
    }

    }

     

     


     

    動体検知込みで送る

    #include <Arduino.h>
    #include "Image.h"
    #include "SD.h"
    #include "RTC.h"

    Image image[3];
    void setup(){
    Serial.begin(57600);
    image[0].begin();

    }
    void loop(){
    uint8_t headder_data[12] = {0xFF,0xFF,0xAA,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
    static int cnt = 0;

    while(cnt < 2){ //necessary at least two image in the past.
    image[cnt].captureStart();
    while(!image[cnt].isCaptureFinished());
    image[cnt].createGrayImage();
    cnt++;
    }

    image[cnt%3].captureStart();
    while(!image[cnt%3].isCaptureFinished());
    image[cnt%3].createGrayImage();
    // Moving detection
    if( 0 == image[cnt%3].movingDetection(image[(cnt-2)%3].getCreatedGrayImage(), image[(cnt-1)%3].getCreatedGrayImage())){
    //do nothing
    }
    image[cnt%3].createJpg();
    uint8_t* adr = image[cnt%3].getCreatedJpg();
    int32_t size = image[cnt%3].getCreatedJpgSize();
    headder_data[8] = (uint8_t)((int32_t)size >> 0);
    headder_data[9] = (uint8_t)((int32_t)size >> 8);
    headder_data[10] = (uint8_t)((int32_t)size >> 16);
    headder_data[11] = (uint8_t)((int32_t)size >> 24);

    for (int i = 0; i < sizeof(headder_data); i++){
    Serial.write(headder_data[i]);
    }
    for (int i = 0; i < size; i++){
    Serial.write(*adr);
    adr++;
    }
    cnt++;

    }

    • Cancel
    • Up 0 Down
    • Reply
    • Verify Answer
    • Cancel
Children
  • ash
    0 ash over 3 years ago in reply to Okamiya Yuuki
    岡宮さん、ご回答ありがとうございます。

    改めて初期の状態で白とびがあることを確認しまして、
    AWBをOFF(OV7740 0x80 0x6F)にしたところ、白とびが改善されました。
    そしてAWBをON(OV7740 0x80 0x7F)に戻して再度トライしたところ白とびが改善していました。

    何が要因になっているのかいまいちわかりませんが、一度ov7740.hを変更してコンパイルを通すことが何かの刺激になってバイナリが改善されたように見えます。
    また、動体検知込みのプログラムも正しく動くことを確認いたしました。

    そしてDisplayAppをご提供ただきありがとうございます。
    画像がリアルタイムで確認できて便利でした。

    USB CDCを用いたDisplayAppのようなWindowsアプリが作れるとGR-KAEDEの応用範囲も広がるのでその作り方にとても興味があるのですが、差支えなければDisplayAppのソースコードを閲覧させていただくことはできませんでしょうか。
    • Cancel
    • Up 0 Down
    • Reply
    • Verify Answer
    • Cancel
サイト使用条件
プライバシーポリシー
お問い合わせ
© 2010-2020 Renesas Electronics Corporation. All rights reserved.