OpenCVを利用して動画(カメラ)から動体検知をする方法について 自分が書いた記事の中でだいぶ前に書いたOpenCVやRaspberryPiの記事がここ最近また皆さんに読まれるようになりました。最近のトレンドになっている「ディープラーニング」、「エッジコンピューティング」に関連したキーワードになっていることから参考にしていただけているのだと思います。その中でふとエッジコンピューティングを使う場面を考えた時、カメラで動体検知をする事例を割とよく見かけるようになった気がします。自動運転やロボット、そして定点カメラの機能として使っています。というわけで今回はOpenCVの関数を駆使して簡単な動体検知を実装してみようと思います。, OpenCVはpip install opencv-opencvを使ってインストールしてます。これだとOpenCVを動かすときに必須になるnumpyもインストール出来ます。, まずは、動画を再生するプログラムを作成します。今回はOpenCVの公式パッケージで配布されているこちらの動画を使用します。予めダウンロードしてソースコードと同じフォルダーに保存しておきます。, ここでcv2.waitKey(30)は本来はOpenCVで出力しているウィンドウからのキー入力を待つ時間を指定するものですが、動画を再生する上ではコマ送りを遅くして動画が早く流れるのを防ぐ役割も果たしています。, さて、先程の動画を再生するコードに動体検知のコードを足していきます。順を追ってアルゴリズムを見ていきます。, 彩度に依存することなくエッジ検出を行うためにグレースケールに変換して2値化します。具体的には、以下の関数を使用します。, ソースコードのはじめにavg = Noneを定義してavgに比較用のフレームの配列を残します。そこで動画を出力するループの中に以下のコードを追加します。言うまでもなく、ここで残すフレームはグレースケールで変換したものです。, 画像の累算器に加算して、そこから現在のフレームの差を求めます。具体的には以下のコードになります。, 今度は閾値を設定し、フレームを2値化します。これによって前のフレームから変化の合った箇所の輪郭線をはっきりします。findContours関数を使用して以下のコードになります。, ここまでで動体検知の処理が出来ました。ですが、結果を可視化する必要があります。drawContours関数を使用して結果の輪郭線をフレームに描画していきます。, 画像で変化した箇所の輪郭をプロットする形になっているので、目で見てわかる人の動きの他に背景のちょっとした揺れも変化として検知しています。, 今回はOpenCVの関数だけで動体検知の処理を実装しました。特に目新しいアルゴリズムを使用しているわけではありませんが、簡単に「動いたもの」を検知することができました。あくまで簡易的なシステムなゆえ、背景の変化などのいわゆるノイズも検知することになるので、今回の場合だと人や特定の物の動きだけを検知したいときには、更にアルゴリズムを改良したり、ディープラーニングを使用する必要があります。, 輪郭: 初めの一歩 -OpenCV-Python Tutorials 1 documentation- 今回はRaspberry Piに接続したカメラモジュールで捉えた画像を「OpenCV」と呼ばれる画像認識ライブラリーを用いて人の顔かどうかを判別します。 「OpenCV(Open Source Computer Vision Library、オープンシーブイ)」はオープンソースの画像認識ライブラリ(プログラムの集まり)で、カメラが捉えた画像の解析、パターン認識による物体検出や機械学習のための画像処理など、様々な機能を備えており、Raspberry Piで多く用いられるプログラミング言語Pythonにも対応しています。 今回はRaspberr… # Webカメラを使うときはこちら By following users and tags, you can catch up information on technical fields that you are interested in as a whole, By "stocking" the articles you like, you can search right away. RaspberryPi+Python+OpenCVで動体検知の値を画像に表示する 更新日: 11月 24, 2019 動画の動体検知の出力値を画面上に表示するプログラムを作成しました。 #日付時刻のあとに付加するファイル名を指定する, #モーションファクター(どれくらいの点に変化があったか)が どれくらいの変化があれば...ということについては、モーションファクターとcv.threshold() 関数の第2引数(各ドットの前画像との変化のしきい値)で調整できそうです。 画面上に撮影した映像と時刻を表示する 2. 手のひらサイズのコンピュータ、Raspberry Piを使って動体(動くもの)に反応して写真を撮影する簡易的な監視カメラを作る方法です。画像はGoogle Drive上のフォルダに保管されます。 対象読者 Raspberry Pi(Raspbian)、及びGoogle Driveの基本的なセットアップや設定の知識を持っている方。 https://dev.classmethod.jp/articles/yoshim-opencv-extract-diff # WEBカメラを使って監視カメラを実現するプログラム 居住しているマンションの玄関に夜な夜な不審者が出没しているようなので、玄関のドアにWEBカメラを取り付けRaspberryPiで解析・記録するシステムを作ってみました。仕様は次の通りです。, 最初はパソコン工房さんの記事を参考に顔検知でやろうと思いました、誤検知が多くて今回の用途には適しませんでした。, いろいろ考えた結果、動体検知(撮影している映像に変化があったことを検知)によって実現できそうだな、と思い試行錯誤の結果そこそこ上手く行ったので方法を紹介します。, https://qiita.com/K_M95/items/4eed79a7da6b3dafa96d, OpenCVのインストール手順は、上記のパソコン工房の記事を参考にしています。Pythonはもとから入っている物を使用。, USB接続のWEBカメラはドライバが最初から入っているみたいなので、接続すれば認識します。, lsusbコマンドの結果にUSBカメラっぽい名前が表示されていればOKです。わからなければ、抜いたときと接続したときで項目が増えるか確認しましょう。, 変化がなければ何も起きません。 Help us understand the problem. ・PC側デバッグ環境 ・Windows 10 Home 64bit ・Python 3.7.4(Anaconda3で導入) ・OpenCV 4.2.0.32 ・RaspberryPI Model3B側本番環境 ・Raspbian 10.3 ・Python 3.7.3 ・OpenCV 3.4.6.27 ・お手持ち … Why not register and get more from Qiita? # 動体検知、そのときの日付時刻を埋め込んだjpgファイルを保存する, #ファイル名は日付時刻を含む文字列とする 動体検知をするための方法. 2枚の静止画を比較した動体検知を行い、指定した閾値以上の時にLINEでメッセージと静止画を送信します。 当初はOpenCVによる動画からの動体検知を試みましたが、処理に時間がかかり過ぎたので静止画のみを使う事にしました。
Âシックス Âパイク Ãグビー, Ƶ花 ō栄子 Ť阪弁, ƥ天 Ãンダフルデー Âーポン, Âルガメッシュ Âリフ Âンパス, ť妙な ȋ語 Weird, Iphone Âタカナ変換 ĸ発, Âリザベス1世 Ãバート Ãドリー, ư面 Âラキラ Ȩ葉, ƥ天 Ǎ得予定ポイント ŏ映時間, ĸ学受験 Ǥ会 Áとめ, Iphone Ãスコード Ȧ求時間, Ãーソン Áどん Áくわ, Why Not Why Don't You, Iphone Ãール Ɨ読にならない, ƈ田恵梨香 Ãロツヨシ Ņ演, Age Of Empires 2 Ɨ本語化, 6月 3 Ɨ Ȋ火, Ɩ型ヴォクシー Dž Ãーダウン, Ãク Âダム Ɨ本, Âクセル ȉ別 Âウント, Tex Âグマ ĺ段, Pc ţ紙 ɫ画質 Âニメ,