中島 貴志
2016.11.02
年齢の判定が-1歳になってしまう
~現象~
「年齢の判定」ブロックの後で「年齢の取得」ブロックを使って、「faceDetectResultAge」から年齢を取得していますが、どうしても"-1"しか返されていません。

~質問~
VstoneMagicのマニュアル「命令ブロック」にある「年齢の取得」ブロックの説明に以下の記述があります。

「顔検出、及び顔追従の実行中に、現在検出している顔の年齢を取得します。取得した年齢は変数faceDetectResultAgeに代入されます。ブロックの実行時点で顔を検出していない場合、年齢は-1になります。

なお、本ブロックは、「ageSexDetect」の設定をtrueにした顔検出、及び顔追従ブロックの中でお使いください。この設定がfalseになっていたり、これらのブロックの外で本ブロックを使うと、プログラムの実行時にエラーが発生します。」

質問1.「顔検出、及び顔追従の実行中」と記載がありますが、これは双方のブロックを実行させるように読み取れますが、その通りでしょうか?

質問2「.「ageSexDetect」の設定」とは具体的にどこにある設定でしょうか?
 
回答
Sotaサポート
2016.11.04
中島 貴志 様

Sotaサポートです。

以下、ご質問にお答えいたします。

> 質問1.「顔検出、及び顔追従の実行中」と記載がありますが、
> これは双方のブロックを実行させるように読み取れますが、その通りでしょうか?
顔検出ブロック、または顔追従ブロックの実行中という意味となります。

命令ブロック「顔追従」の説明ページの中に

https://goo.gl/a6V8jQ
(URLに日本語が含まれますため、短縮URLとさせて頂いております。)

「顔追従の中に別の顔追従や顔検出のブロックを入れると、
カメラの使用が重複してプログラムの実行エラーが発生するため、
これらのブロックは必ず同時に1個だけ実行されるようにしてください。」

との表記があるように顔検出、及び顔追従のブロックは単一でなければ正常に動作致しません。


> 質問2.「「ageSexDetect」の設定」とは具体的にどこにある設定でしょうか?
大変申し訳ございません、「「ageSexDetect」の設定」につきましては
VstoneMagicの更新に伴って設定からは削除された項目となります。

実質的に内部では常にtrueとなっているため、特に設定を確認・変更する必要はございません。


この度ご質問を頂いております現象が発生する
可能性として、下記3点が挙げられます。

・Sota、VstoneMagic、ライブラリのバージョンが最新でない
・Sotaのカメラが正しく顔を認識できていない(ハードの故障)
・作成されたプログラムの構成に異常がある


また、下記につきまして

> 「年齢の判定」ブロックの後で「年齢の取得」ブロックを使って
2つのブロックはそれぞれ「ブロックの実行時点で見えている顔」から
年齢を取得する処理を行います。

結果はどちらも「faceDetectResult」に格納されますので、
取得した年齢によって分岐する処理を組んでいる場合には

判定ブロックの後に取得ブロックを使用すると、
実質的に取得処理を2重に行うため意図しない動作をする可能性があります。

----------------------------------------

【例】判定した後に取得した年齢を発話させるプログラム

1.判定ブロックが30歳以上と認識すれば
「こんにちは、あなたは○○歳ですね」と発話するように設定

2.判定ブロックの実行時、認識した顔を31歳と判定

3.直後に取得ブロックを実行し、29歳と判定

4.Sotaは「こんにちは、あなたは29歳ですね」と発話
→意図していない動作となってしまう

---------------------------------------

以上、よろしくお願い申し上げます。
この質問に回答する
 

Page Top