ラズパイでカメラの使い方!Pythonとコマンドの基本・応用例を紹介

ラズベリーパイ(raspberry pi)

ラズベリーパイとカメラの使い方をまとめてみました。初心者の方でも簡単に撮影できます

Pythonとコマンドのどちらでも写真・動画撮影が対応できる旨を紹介して、最後には画像認識まで実施してみます。

スポンサーリンク

ラズパイでカメラの使い方!Pythonとコマンドの基本・応用例を紹介

ラズベリーパイをカメラに取り付けると多くのことができるようになります。

「写真」「動画」「画像認識」「物体検出」…など様々な用途で活躍可能です。

 

またラズパイならばカメラをPython・コマンドから制御できるので自由にカスタマイズできるのも非常に便利です。

 

ラズパイ+カメラの基本的な使い方から応用まで紹介していきます

 

ラズパイのカメラで写真撮影して画像を保存する

まずは「写真」を撮るコマンド・Pythonのプログラムを紹介します。

 

ラズパイで写真撮影するコマンド

ターミナルを開いて、下記コマンドを入力することで「test.jpg」という画像が保存されます

sudo raspistill -o test.jpg

デフォルト設定のため「2592×1944」ピクセルの500万画素で写真が保存されます。

 

初期状態のターミナルで実行した場合は「/home/pi」の箇所に写真が保存されているはずです。

 

ラズパイで写真の解像度を変更したい場合

写真の解像度を変更したい場合は「-w」「-h」の後に数字を入れることで任意に変更できます。

下記は「640×480」の解像度で「test.jpg」という名前で写真が保存されます

sudo raspistill -w 640 -h 480 -o test.jpg

 

ラズパイで写真撮影するPythonのプログラム

「picamera」のライブラリを使って対応します。(あと「time」のライブラリも使用します)

Python含めてデフォルトでラズパイに入っていますので特にインストール作業は必要ありません。

import time
import picamera

with picamera.PiCamera() as camera:
camera.resolution = (640, 480)
camera.start_preview()
time.sleep(2)
camera.capture('test.jpg')

 

上記Pythonを動かすことで「640×480」の解像度で「test.jpg」という名前で写真が保存されます。

プログラムが入っているフォルダに写真が保存されます。

 

ラズパイのカメラで動画撮影する

次に「動画」を撮るコマンド・Pythonのプログラムを紹介します。

 

ラズパイで動画撮影するコマンド

ターミナルを開いて、下記コマンドを入力することで5秒間の「test.h264」という動画が保存されます

sudo raspivid -t 5000 -o test.h264

 

もし解像度を調整したい場合は写真の時と同様に「-w」「-h」を使えば大丈夫です。

sudo raspivid -w 640 -h 480 -t 5000 -o test.h264

上記コマンドでは「640×480」の解像度で動画が保存されます。

 

H.264をMP4に変換する方法

今回紹介したラズパイの動画撮影のコマンドではH.264というフォーマットで保存します

H.264だと(デフォルトの)WindowsのPCに持って行った場合、動画ファイルを再生ができません。

 

しかしラズパイならば簡単に変換可能です。下記コマンドで「gpac」パッケージをインストールします

sudo apt install -y gpac

 

「gpac」をインストール後は「MP4Box」という下記コマンドでh.264からmp4に変換が可能です。

先ほど保存した「test.h264」ファイルを「test.mp4」に変換できます

MP4Box -add test.h264 test.mp4

 

ラズパイで動画撮影するPythonのプログラム

Pythonで動画撮影も「picamera」のライブラリを使って対応します。

import time
import picamera

with picamera.PiCamera() as camera:
camera.resolution = (640, 480)
camera.start_preview()
time.sleep(2)
camera.start_recording('test.h264')
camera.wait_recording(10)
camera.stop_recording()

 

上記プログラムを動かすことで「640×480」の解像度で10秒間動画撮影され、「test.h264」という名前で動画が保存されます。

 

ラズパイのカメラで画像認識させる

基本的な写真撮影・動画撮影のコマンド・pythonを紹介することができました。

これからは「応用編」ということでラズパイとカメラで(リアルタイムの)画像認識を行っていきます。

 

ラズパイで画像認識させるにあたり色々なアプローチが考えられますが…

筆者はエッジAIデバイスのCoral USB Acceleratorで(楽して)画像認識する方法を紹介します。

 

ラズパイで画像認識した応用例

今回は「リアルタイムで物を画像認識」させますが、他の画像認識の応用例も紹介しときます。

よろしければこちらもご覧ください。

 

人の動作を検出させて、姿勢を推論させた事例

人の動作を検出!Edge TPUとPosenetで姿勢を推論してみる

人の動作を検出!Edge TPUとPosenetで姿勢を推論してみる
写真・動画の「人の動き」をリアルタイムで検出・解析することがGoogleのエッジ向けのプロセッサ「Edge TPU」で可能です。 誰でも簡単に「人間の姿勢」を推定して検出・解析できる方法を紹介していきます。 人の動作を検出!...

 

GPIO入力からカメラ撮影+物体検出させた事例

Pythonと機械学習ができること 画像認識を工場の事例で試してみた

Pythonと機械学習ができること 画像認識を工場の事例で試してみた
「機械学習を使った画像認識」+「ラダー・PLCで動く工場の機器」を連携させてみました。Pythonとラズベリーパイでデバッグしましたので誰でも同様にテストすることができます。 Pythonは多くの分野で活躍しているプログラミング言...

 

画像認識させた情報からGPIO出力させた事例

AIと画像認識の事例!Pythonでプログラミングして試してみた

AIと画像認識の事例!Pythonでプログラミングして試してみた
AIで画像認識させて特定の物を検出した場合には外部機器を制御するようにPythonでプログラミングしました。 実際に動く物を検出しますので「人・動物の検知」「工場ラインの管理」等に応用できます。 リアルタイムで動体をAI+画...

 

リアルタイムで画像認識した情報を学習させた事例

GoogleのAIの活用事例!Edge TPUのデモを自前で作ってみた

GoogleのAIの活用事例!Edge TPUのデモを自前で作ってみた
Googleが「CES」等の世界規模の展示会で実施していた「Edge TPU Dev Board」のデモを自前で作ってみました。 「ラズベリーパイ」と「USB Accelerator」で真似できましたので誰でも同様にAIの事例を試せま...

 

ラズパイでリアルタイムの画像認識を行う準備

今回はエッジAIデバイスのUSBアクセラレータを使いますのでライブラリ・サンプルプログラムを用意していきます

正式な手順はUSBアクセラレータのCoral公式ページをご覧ください(リンク先はこちらから)

 

Coral USB Acceleratorのインストール方法・基本的な使い方に関しては下記記事を参考にお願いします。

ラズパイのUSB3.0でエッジAIデバイスを接続!USB2.0との比較
ラズパイ4でエッジAIデバイスのUSB Acceleratorを動かし方を紹介します。 ラズベリーパイのUSB3.0とUSB2.0でエッジデバイスとしての性能・速度を比較しています。 ラズパイのUSB3.0でエッジAIデバイスを接続...

 

Edge TPU APIをダウンロード・インストールする

下記コマンドを実行してEdge TPUのAPIのサンプルをダウンロード・インストールしていきます

echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | sudo tee /etc/apt/sources.list.d/coral-edgetpu.list

curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

sudo apt-get update

sudo apt-get install edgetpu-examples

 

インストールが終われば「/usr/share/edgetpu/examples/」の箇所にサンプルプログラムが入っています。

 

画像認識に必要な機械学習のモデルとラベルをダウンロードする

CoralのHPに行って今回の画像認識に必要なモデルとラベルをダウンロードします。(リンク先はこちらから)

 

今回は「Image classification」の「MobileNet V2 (ImageNet)」のモデルとラベルを入手します。

 

ダウンロードしたら「/usr/share/edgetpu/examples/」の直下のフォルダの「models」に入れておきます。

 

Pythonでリアルタイムで画像認識を行う

画像認識を行うプログラムは既にメーカCoralから用意されていますので、コマンドで実行するだけです。

 

今回はPythonで書かれている「classify_capture.py」を使ってリアルタイムの画像認識を行います。

 

興味ある方はプログラムを開いて見ると良いと思います(勉強にもなると思います)。

 

筆者の環境のコマンドでは下記を実行して、無事画像認識が出来ました。

cd /usr/share/edgetpu/examples/

python3 classify_capture.py --model models/mobilenet_v2_1.0_224_quant_edgetpu.tflite --label models/imagenet_labels.txt

 

リアルタイムの画像認識でラズパイの性能比較した動画

ただ結果の動画を貼るだけでは面白くないので、最新のラズパイ4(USB3.0)とラズパイ3(USB2.0)で比較しました。

 

テスト環境は下記です。

OS:Raspbian Buster with desktop and recommended software(September 2019)

試験プログラム:classify_capture.py

接続デバイス:Google Coral Edge TPU USB Accelerator

 

結果は「ラズパイ4(USB3.0)…推論時間_5ms程度」「ラズパイ3(USB2.0)…推論時間_13ms程度」でした。

 

もともとEdgeTPUで高速に画像認識していましたが、ラズパイ4で更に2倍上高速化しています

 

詳細は下記Youtubeの動画を参考にお願いします。

ラズパイ4の性能をリアルタイムの画像認識で確認してみた

 

ラズパイのカメラを動かす方法

基本・応用例まで紹介しましたが、これからラズパイ+カメラを始める人のために初期設定を説明させていただきます。

ラズベリーパイにカメラの取り付け方

ラズベリーパイのカメラの取り付けるのは非常に簡単です。

最近は1000円程度で売られているので非常におすすめです。

 

実際に購入しますとカメラとケーブルが入っていますので接続するだけです。

難しいことは必要ありません。

 

カメラ側にケーブルを挿してコネクタをはめて…

 

ラズベリーパイ側も「CAMERA」のシルクがあるコネクタに

 

黒いコネクタ側を少し持ち上げてから銀色の端子が見える方を(Micro)HDMI側にして差し込めば完成です。

 

ケーブルを差し込んだら、黒いコネクタは押し込んでおきます。これで取り付け完了です。

 

ラズベリーパイのカメラの起動方法

ラズパイのカメラはデフォルトでは動作しませんので、設定を変更する必要があります。

但し変更といっても簡単です。「設定」⇒「Raspberry Piの設定」を選択します。

 

あとは「インターフェイス」のタブで「カメラ」を有効にしてOKをクリックします。

再起動後にはカメラが使えるはずです。

 

ラズパイのカメラはケース付きがおすすめです

あと細かい点ですがケースがないとカメラの固定が結構難しいです。

 

筆者は洗濯ばさみで一時的に代用していますが、かなり見栄えが悪いです…。

 

もしラズパイのカメラの購入を検討している方はケース付きをおすすめします。

 

まとめ・感想

ラズベリーパイ(raspberry pi)カメラは写真・動画撮影だけでなく、「画像認識」含めて色々なことに応用可能です。

ぜひラズパイを所持している方はカメラも試してみてください

コメント