Raspberry Pi3 でOpenCV3+Python3(背景差分による動体検出)
- Python3.5.3
- OpenCV3.3
- Raspbian Strech
使ったもの
- Webカメラ -C270
以前に参考にしていたこちらはOpenCV2.4 + Python2.7なので、
tatsu-zine.com
新しく以下の学習コンテンツを参考
www.udemy.com
- 環境の構築(OpenCVの導入)
- 画像/動画の入出力
- トラックバー / マウスイベント
- 色空間/グレースケールへの理解
- 平滑化/エッジの検出などの畳み込み処理
- 2値化
- 特徴点の抽出
- 色検出、オプティカルフローなどの物体追跡
- パーティクルフィルターの理論と実装
取り扱っていない内容
- 機械学習
- カメラモデル
- SIFT/SURFなどのライセンス上商用利用しにくいもの
import cv2 import numpy as np cv2.namedWindow("img", cv2.WINDOW_NORMAL) cv2.resizeWindow("img", 1200, 800) cap = cv2.VideoCapture("my_video.mkv") ret, frame = cap.read() h, w, ch = frame.shape frame_back = np.zeros((h,w,ch), dtype=np.float32) while True: ret, frame = cap.read() if ret == False: break frame_diff = cv2.absdiff(frame.astype(np.float32), frame_back) cv2.accumulateWeighted(frame, frame_back, 0.1) cv2.imshow("img", frame_diff.astype(np.uint8)) if cv2.waitKey(10) == 27: break cv2.destroyAllWindows()
実行結果
ダンボーが闇落ちしただけで10秒ほどで処理が落ちました。
PC上で実行すると普通に差分がとれて、動体検出ができましたので、
Raspberry Piのオーバークロックで、少しでも処理能力の向上を図ってみることに。
以下の記事を参考にさせていただきました!
ラズベリーパイのCPUクロックと電圧をいじってみる – EZなBlog
Raspberry Pi3 CPUクロック周波数を固定にする方法 | ある計算機屋さんの手帳
sudo vim /boot/config.txt
以下のように編集
force_turbo=1 arm_freq=1300 over_voltage=5 # ついでにGPUメモリも128 から 320へ変更 gpu_mem = 320
CPUガバナーの設定を変更
# 1.3GHz動作(固定) sudo cpufreq-set -g performance
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq 1300000
ちゃんと1.3GHzに設定されました。
また、オーバークロックによるCPU損傷を少しでも軽減させるためにファン付きケースに入れてみる。
5in1 アップデート!アクリル Raspberry Pi Model B+ Raspberry Pi 2/3 Model B 専用アクリル・ケース+ファン+ スイッチ付きケーブル+クーラー2個+HDMI to VGA ケーブル(Black/黒)
rebootしてから、再度実行・・・・・
してみましたが、とくに実行結果はからわず、ダンボーが闇落ち後、数秒で落ちました。。。
次は2値化処理などで負荷を軽減させる処理を加えてみたいと思います。