- インストール
- 基本操作
- 電子工作向けプログラミングの基本
- Excel向けプログラミングの基本
- scikit-learnでの機械学習
- matplotlibでのデータの可視化
- Web関連プログラミング
- RPA関連プログラミング
- その他の各種プログラミング
- リファレンス
物体検出
Arduino UNO Qにビデオカメラを接続して映像をキャプチャし、その中に含まれる物体を検出することができます。
配線
上記の画像の「Single Board Computer Mode」のように、PD対応のUSBハブを用意し、そこにUSBのACアダプタとArduino UNO Qを接続します。
また、Webカメラ(もしくはUSB接続のビデオキャプチャとビデオカメラ)をUSBハブに接続します。
Brickの追加
物体検出の機能を使う場合は、ファームウェアのプログラムに、物体検出のBrickを追加することが必要です。
Arduino App Labでファームウェアのプログラムを開いて、画面左上の「Bricks」のところにある「Add Brick」のボタンをクリックします。

「Add App Brick」のダイアログボックスが開きます。
Brickのリストの中で「Video Object Detection」を選択し、「Add Brick」のボタンをクリックします。
次に、「Configure」のダイアログボックスが開き、Brickの種類を選ぶ状態になります。
「General purpose object detection - YoloX」を選び、「Save」のボタンをクリックします。
「Save」のボタンをクリックすると、「Success」のダイアログボックスが表示されます。
右上の×のボタンをクリックして、ダイアログボックスを閉じます。
なお、Video Object DetectionのBrickを追加した後で、USBハブにカメラを接続していない状態でファームウェアのプログラムを起動しようとすると、「missing required device: no camera found」のエラーが発生します。
カメラを使わないプログラムを作りたい場合は、ファームウェアのプログラムから、Video Object DetectionのBrickを削除することが必要です。
ファームウェアのプログラムを開いて、画面左上のBrick一覧の個所で「Video Object Detection」のBrickを右クリックし、メニューの「Remove」を選ぶと、Brickを削除することができます。

複数の種類の物体を検出する場合の基本的なプログラムのパターン
物体検出では、同時に複数の種類の物体を検出することができます。
それらすべてを対象にして処理を行う場合の、基本的なプログラムのパターンは、以下のようになります。
Arduino UNO Qに接続した後、カメラを初期化して変数に代入します。
次に、検出器を初期化します。その際に、先に初期化しておいたカメラの変数を、パラメータとして指定します。
「信頼度」のパラメータでは、0~1の値を指定します。検出された物体の信頼度が、このパラメータの値を超える場合のみ、検出と判断されます。
「画像表示」のチェックボックスをオンにすると、ポップアップウィンドウが開いて、カメラの映像が表示されます。
初期化された検出器は、変数に代入しておきます。
この後、「物体を検出したとき」のブロックを使って、物体を検出したときに実行したい処理を作ります。
このブロックには辞書型のデータが渡され、それを「引数」のパラメータで指定した変数で受け取ります。

「物体を検出したとき」のブロックの中には、「検出結果○○の各物体について」のブロックを入れて、見つかった個々の物体を順に処理するブロックを入れます。
このブロックの「名前」のパラメータで、物体の名前(例:dog)を代入する変数を指定します。
「データ」のパラメータで、物体の情報を代入する変数を指定します。

そして、この情報の変数に対して繰り返しを行うことで、見つかった個々の物体の情報を得ることができます。

この繰り返しの中では、見つかった物体の信頼度と座標を扱うことができます。
![]()
![]()
特定の種類の物体を検出する場合の基本的なプログラムのパターン
特定の種類の物体(例:dog)が検出された場合のみ、処理を行うこともできます。
その場合のプログラムのパターンは、以下のようになります。
検出器を初期化するまでの流れは、複数の種類の物体を検出する場合と同じです。
その次に、「○○を検出した時」のブロックを使って、物体を検出した時の処理を作ります。
「引数」のパラメータで、検出した物体の情報を代入する変数を指定します。

そして、この情報の変数に対して繰り返しを行うことで、見つかった個々の物体の情報を得ることができます。

この繰り返しの中では、見つかった物体の信頼度と座標を扱うことができます。
![]()
![]()
事例
以下のプログラムは、物体を検出して、その名前と信頼度を表示する例です。
このプログラムはこちらからダウンロードすることができます。
