2021/12/15 よりサイトリニューアルしました

Raspberry Pi で作る「Open CVを使ったカラートラッキング追従カメラ」

カラートラッキング

 

先日、M5stackのunitv2で遠隔操作できるネットワークカメラを作成いたしました。↓

これを応用して、動体検知などでカメラが追従する仕組みを作ろうと思い立ったのですが、unitv2を使うとなればuartで他のデバイスにカメラ軸などの値を転送しなければならない為、個人的には敷居が高く、断念いたしました。

そこで、代わりにRaspberry piを使う事にしました。i2cが使えますので、直でサーボモータードライバを動かす事ができます。つまり動体検知のプログラムとサーボモーター駆動のプログラムを1つにまとめて書くことが出来ます。

動体検知のプログラムには、「Open CV」の」ライブラリを使用しました。カラートラッキング、顔認証、動体検知、などなどカメラ画像処理に長けた有名なライブラリですね。Pythonでも使えるので、Pythonで作成する事にしました。

Open CVは初めて触る事になるのですが、やってみた感想は、「便利な反面初学者には少々理解するのに時間がかかりそう」という感じです。ただ、ググれば先人方のフォーマットがたくさんヒットしますので、とりあえずそれを参考にすればなんとか動作させる事ができる事も分かりました。

という事で、今回は先人の知恵を借りながら、「Raspberry Pi で作るOpen CVを使ったカラートラッキング追従カメラ」についてまとめたいと思います。とりあず、カラートラッキングから。

 

初めに

Open CVのインストール

はじめに、ラズパイ(今回はRaspberry Pi4を使いました)にOpen CVをインストールします。

最新のものだとエラーが出たので、バージョンを指定しています。

続いてパッケージリストを最新にして、「libatlas3-base」 パッケージをインストールします。

以上でOpenCVのインストールは完了です。

ターミナルでpythonインタプリタを立ち上げ、import cv2 でエラーが出なければOKです。

 

システムの概要

おおまかな動作の流れとしては、下記のような感じのものを作ります。

raspberry pi4 ⇒ i2c ⇒ pca9685 ⇒ サーボモーター

pythonプログラムを作成し、カメラ画像に合わせたカメラ軸の位置をOpen CVとPCA96852ライブラリで決めてサーボモータドライバへ伝え、サーボモーターを駆動させます。

ちなみにカメラは、ラズパイ純正のカメラモジュールでも、USBカメラでも両方OKです。

 

Open CVについて

土台となるpythonの記述について

pythonの場合の基本的な記述を載せておきます。

上記のプログラムでカメラのストリーミングが開始しますので、これが基本的な土台となります。後は間にある部分に行わせたい画像処理のコードを挿入していく形になります。

それでは続いて、カラートラッキング+カメラ追従のプログラムを書きます。

 

プログラム

Python

以下のプログラムは、以下のサイトを参考にさせていただきました。

定年まで泣くんじゃない

pigpioの使い方になれていなかったので、Adafruit_PCA9685に変更しています。

 

プログラムの説明につきましては、上記サイト管理者様がコメントアウトにて丁寧に説明を入れてくれてますので、非常に分かりやすいです。

プログラム起動後、初めに画面中央に映った物体を色認証します。4つの小さい画面が起動するので、それを閉じれば、認証した色の物体を追従するようになります。

 

動作確認

こんな感じで動いてくれます。↓

 

次回は顔認証、顔認証追従に挑戦したいと思います。

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です