0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Raspberry Pi Zero 2 WでOpenCVを使った動体検知テスト

Posted at

1.はじめに

前回記事の続きを行う。
今回は参考サイトをRaspberry Pi Zero 2 Wで実装し、マシンスペック的に動作可能か確認する。

2.手順

  1. OpenCVインストール
  2. 参考サイトの動体検知ソースコードを実行

3.OpenCVのインストール

まずOpenCVをインストールすべく参考サイト内で引用されているパソコン工房の記事を参考にするが、一部変更。

記事内のコマンド
sudo apt-get install python-opencv
本環境のコマンド
sudo apt install python3-opencv

apt-getaptの違いについて

このサイトの内容から要約するとaptのほうが
apt-getapt-cacheを内包した新しいコマンド
・ユーザレベルなら使いやすい
という事で基本はaptで良い。

python-opencvpython3-opencvの違いについて

名前から分かる通り、python3-opencvはPython3.xx.xxのバージョンに向けたOpenCVのバインディングである。本記事投稿時では、これが主流となっている。
python-opencvはPython2.xx.xxのバージョンに向けたOpenCVのバインディングで簡単に言うと古い。Python2自体は更新が止まっているため、今後の使い勝手を考えるとPython3のほうが無難。もちろん使用環境によってはその限りではないが。

現在のPythonバージョンの確認のコマンドは以下。

python -V

本環境ではPython 3.11.2がインストールされていた。

4.動体検知ソースコード

参考サイトのソースコードをそのまま使用したいが、一部エラーが発生し面倒なのでnanoで#にてコメントアウトし対応する。
コメントアウトする行は87、88行目でウィンドウ表示に輪郭を入れるものらしい。
コメントアウトしない場合、以下のエラーが出ていた。

[ WARN:@05.330] global ./modules/videoio/src/cap_gstreamer.cpp (1405) open OpenCV | GStreamer warning: Cannot query video position: status=0, value=-1, duration=-1

Traceback (most recent call last):
  File "/home/duruga/test/security_cam_motion.py", line 87, in <module>
    image, contours, hierarchy = cv.findContours(thresh.copy(), cv.RETR_EXTERNAL , cv.CHAIN_APPROX_SIMPLE)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: not enough values to unpack (expected 3, got 2)

このエラーはcv.findContours()の戻り値の足りないため発生している。
・OpenCV 2.x.x / 3.x.x : "image", contours, hierarchy = cv.findContours(...)
・OpenCV 4.x.x : contours, hierarchy = cv.findContours(...)
OpenCV 4系はimageが返ってこないためエラーになっている。

使用環境のOpenCVのバージョン確認方法は以下。

python -c "import cv2; print(cv2.__version__)"

本環境では4.6.0であった。エラーになって当たり前。

5.動作確認

前節のソースコードを適当なディレクトリに保存して実行する。
今回は画面キャプチャボードを使用し、スマホの画面をカメラ入力としている。
ホーム画面で操作をしていないとき。
20250131_153845037_iOS.jpg

操作をしたとき。
20250131_154010118_iOS.jpg
正常に画面を入力でき、画面操作によって入力映像に変化があった際には左下数値が0→0.08...に変化している。
この程度の負荷であればRaspberry Pi Zero 2 Wでも動作可能と確認できた。

6.おわりに

Raspberry Pi Zero 2 Wにて元々Raspberry Pi 3 Model B Plusで動作してたソースコードをほぼそのまま動作させた。
元のソースコードでカメラの解像度を下げていることもあってか、動作自体は問題ないように感じた。
もちろんJetson nanoなどの高性能な環境と比べるとマウスの動きにラグはあるが、想像していた動作に比べると遥に余裕があると感じた。

次回は目的の動きがない時にアクションを起こす「静体検知」を行いたい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?