不特定物体検出

- 焦電型赤外線センサー
- 物体(主に生物)からの赤外線放射による温度変化で検出
- Amazon等でも購入可能だが、センサーにより検出性能が異なるので注意が必要
- Raspberry Pi5のGPIOに接続
- センサーのOUT端子を適当なGPIOピン(GPIO 18=12ピンなど)
- センサーの電源ピン(+5VとGND)をGPIOの電源ピンと接続(+5V=2 or 4ピン、GND=6ピン)
- Pythonスクリプト
import gpiod
GPIO_PIN = 18
chip = gpiod.Chip('gpiochip0', gpiod.Chip.OPEN_BY_NAME)
pin = chip.get_line(GPIO_PIN)
pin.request(consumer="SENSSOR", type=gpiod.LINE_REQ_DIR_IN)
if pin.get_value() == 1:
# 赤外線を放射する物体に動きが有る場合の処理

物体認識
- リアルタイム物体識別環境
- Python3 + OpenCVで学習済みモデルを使用して物体識別を行う
- 参考ページ https://core-electronics.com.au/guides/object-identify-raspberry-pi/
- Pythonスクリプト
- モジュール
- from picamera2 import Picamera2
- 必要なファイルを指定
- classFile(物体名を定義) 保存ディレクトリ/coco.names
- configPath(コンフィグファイル) “ssd_mobilenet_v3_large_coco_2020_01_14.pbtxt”の保存ディレクトリ
- weightsPath(モデルの重み) “frozen_inference_graph.pb”の保存ディレクトリ
- カメラ関係
- camera = Picamera2()
- camera.configure(camera.create_preview_configuration(main={“format”: ‘RGB888‘, “size”: (640, 480)}))
- camera.start()
- 画像表示
- img = camera.capture_array()
- result, objectInfo = getObjects(img,0.45,0.2)
- cv2.imshow(“Output”,img)
- cv2.waitKey(1)
- モジュール
- カスタマイズ
- 特定物体を定義
- classFile(物体名を定義)をcoco.namesから独自定義に変更
- 例えば動物だけに絞るのであれば
- animals = [‘person’, ‘bird’, ‘cat’, ‘dog’, ‘horse’, ‘sheep’, ‘cow’, ‘elephant’, ‘bear’, ‘zebra’, ‘giraffe’]
- if len(objects) == 0: objects = classNames ⇒ objects = animals
- 検出処理
- 検出日時をファイル名とした静止画を保存
- import datetime
- result, objectInfo = getObjects(img,0.45,0.2) # 物体検出
- for item in objectInfo: # 検出物体s ループ
- dt_now = datetime.datetime.now() # 検出日時を取得
- fname = ‘保存ディレクトリ’ + dt_now.isoformat() + ‘.jpg’ # 保存ファイル名を定義
- cv2.imwrite(fname ,img) # ファイルを保存
- 更に検出物体を名前で絞りたい場合
- 上記 item[1] == ‘物体名’ で絞り込む
- 検出日時をファイル名とした静止画を保存
- 特定物体を定義


コメント