RaspberryプラットフォームでモーションセンサーとPythonを使用した屋内ビデオ監視システムのシンプルなバージョン

こんにちは、ハブロフスク! 以前の出版物に反映したビデオ監視システムの開発に関するいくつかの実験の後、私は最終的なソリューションを共有することにしました。







最終決定の説明



ビデオ監視システムの使用経験と前回の投稿に対する推奨事項( Varkusに特に感謝します)を分析した結果、PIRセンサー(以下、センサーと呼びます)を使用して動き/動きを判断する実装を選択しました。 ソリューションアルゴリズムはPythonで実装されています。



以前は、ソリューションで追加のハードウェアコンポーネントを使用したくありませんでしたが、センサーを使用したアプローチは非常にシンプルで簡潔でした。 さらに、センサーはaliexpressで注文すると安価であることがわかりました。



ハードウェア



使用される「鉄」から:



-Raspberry Pi3;

-Logitech USBカメラ。

-モーションセンサーSR501P1。

夜働くには、赤外線エミッター(ランプ)を追加購入する必要があります。



センサーは、以下の外観の30 cmコネクターを使用して接続されました。







はい、ポテンショメータを使用して調整することにより、必要な感度を事前に選択しました。



ソフトウェア部



ビデオ監視プロセスを自動化するために、私はすべての作業を行う1つのPythonスクリプトに限定しました。つまり、センサーを使用して動きを監視し、それが検出された場合:



-このためにPython OpenCVライブラリを使用して、部屋のショットをいくつか撮ります。

-Yandex.Diskに画像を保存します。

-私の場合、特定の動きのしきい値に達すると、10個の特定された動きが撮影を停止し、保存された最後の画像をTelegramに送信します。



動きを記録するときに画像の数を制限するために、しきい値(しきい値)が設定されます。 しきい値に達すると、撮影が停止し、最後に保存された写真がTelegramに送信されます。 しきい値を10に設定しました。これは、写真の浸透の事実を修正するのに十分です。 彼は、ビデオは余分なものであると考えました、さらに、写真はより少ないスペースを占有します。



最終バージョンでは、写真の顔を決定するためのアルゴリズムの使用を拒否しました。

顔を決定するアルゴリズムを含まないスクリプトコードを以下に示します。



from gpiozero import MotionSensor import cv2 import telepot import time def Telegram_send(input_file): import glob import os file=max(glob.iglob(input_file+'*.jpg'),key=os.path.getctime) bot = telepot.Bot('*************************************') bot.sendMessage(*********, 'Motion detected!') bot.sendPhoto(*********, open(file,'rb')) def main(): file='/home/pi/alarms/' counter=1 threshold=10 time.sleep(10) pir=MotionSensor(4) try: camera=cv2.VideoCapture(0) while counter<=threshold: #if pir.motion_detected: #pir.wait_for_motion() pir.when_motion print("Motion detected at "+str(time.strftime("%Y%m%d-%H%M%S"))) if not camera.isOpened(): camera.open(0) result,image=camera.read() else: result,image=camera.read() cv2.imwrite(file+str(time.strftime("%Y%m%d-%H%M%S"))+'.jpg',image) counter+=1 #pir.wait_for_no_motion() pir.when_no_motion camera.release() if counter >=threshold: Telegram_send(file) except Exception as e: print('Something is wrong.',e) camera.release() finally: camera.release() if __name__=="__main__": main()
      
      





センサーを使用したソリューションの長所と短所



センサーを使用する長所:



1.操作アルゴリズム全体を実装する1つのPythonスクリプト形式の単純な最終コード。

2.センサーの相対的な安さ。



マイナスの点については、これまでのところ、長時間の使用中にセンサーが故障する可能性があります。 しかし、このデバイス(センサー)は、「産業用」オプションではないという事実にもかかわらず、安定して長時間動作する可能性があります。



追加機能



また、2台目のカメラを接続しようとしました。 Raspberryは、2台のカメラからのビデオストリーム処理を問題なく処理しました。



おわりに



センサーの使用は非常に簡単であることが判明しました。 長期間の使用でソリューションの動作を検証することは残っています。



提案されたオプションが、ビデオ監視システムの実装に対する有用な代替手段になることを願っています。



All Articles