2020年12月27日日曜日

本書の演習をウェブカメラで実行する方法

1. はじめに

本書では、Raspberry Piの公式カメラモジュールを用いた電子工作の例を2つだけ紹介しました。 タクトスイッチをカメラのシャッターにする例(第5章)およびキャタピラ式模型へカメラを搭載する例(第10章)です。

本ページでは、カメラモジュールではなく市販のウェブカメラで演習を行う方法を紹介します。こちらで動作検証したカメラはロジクール社のC270およびC920です。

本ページでは「××社の○○と言うカメラで動くか」という質問や「××社の○○と言うカメラで動くようにして欲しい」という要望には応えることができません。

カメラが異なることによるそのようなトラブルを避けるために、本書ではRaspberry Pi専用のカメラモジュールを使用する方針としたのだったからです。 本ページは上級者向けのサービスという位置づけとしますのでご理解ください。

ところで、2022年2月、Raspberry Pi OS Bullseye の 64-bit 版が正式にリリースされました。この 64-bit 版 OS では、本書でこれまで用いていたカメラモジュールを用いるプログラムをそのまま利用することができません。カメラモジュールの利用法が大きく変わったためです(32-bit 版 OS ではこれまでどおり利用可能)。 本ページの「本書の演習をウェブカメラで実行する方法」を用いると、「64-bit 版 OS でカメラモジュールを用いた演習」が可能になる、という副作用があります。ただし、この方法は準備がやや面倒ですので、カメラモジュールを用いた演習を行いたい方はこれまで通り 32-bit 版 OS の利用をお勧めします。

2. 手順

それではターミナルアプリケーションLXTerminalを開き、本書のサンプルファイル(「04-」などの数字で始まるファイル)が存在するディレクトリに移動してください。 サンプルファイルをユーザーpiのホームディレクトリに展開した方は移動の必要はありません。bluebacksディレクトリに展開した方は下記のコマンドを実行するのでした。
cd bluebacks
次に、下記の3つのコマンドを順に実行して、必要なファイルのダウンロードと展開を行ってください。コマンドはコピー&貼り付けで実行することを推奨します。展開後はダウンロードした圧縮ファイルは不要となるので削除しています。
wget https://github.com/neuralassembly/raspi/raw/master/raspi1-webcam.zip
unzip raspi1-webcam.zip
rm raspi1-webcam.zip
なお、展開されるファイルの名前は既存のサンプルファイルとは異なりますので、サンプルファイルが上書きされることはありません。展開により現れるファイルは下記の通りです。ファイル名の末尾付近に全て「-webcam」がついていることに注意してください。
05-04-sw-camera-webcam.py
10-02-stream-webcam.sh
あとは、以下に従って実行します。

3. 実行

実行に関する注意を、いくつか例を挙げながら解説します。

例えば、本書 p.125 にファイル 05-04-sw-camera.py を実行するよう指示があります。
このファイル「05-04-sw-camera.py」に対しては、ウェブカメラ対応の代替ファイル「05-04-sw-camera-webcam.py」が存在します。 そのような場合、代替ファイルを実行して欲しい、ということです。

ただし、05-04-sw-camera-webcam.py の実行には、下記の2つのコマンドを順に実行することで OpenCV という画像処理ライブラリをインストールする必要があります。
sudo apt update

sudo apt install python3-opencv
05-04-sw-camera-webcam.py を正しく実行できると、まずは 640x480 サイズの画像プレビューが現れます。そして、GPIO 24 に接続されたタクトスイッチを押すことで画像が保存されます。 プログラムを終了するためには、プレビュー画面が選択された状態でキーボードの「q」キーを押してください。

なお、同じく p.125 には「raspistill -o test.jpg -t 1」という静止画保存用のコマンドが記されていますが、このコマンドはウェブカメラ用には使えませんので実行しないでください。

同様に、p.291 には下記のコマンドを /etc/rc.local に記述するよう指示があります。
sudo sh /home/pi/10-02-stream.sh
このファイル「10-02-stream.sh」に対しては、ウェブカメラ対応の代替ファイル「10-02-stream-webcam.sh」が存在します。 そのような場合、上記コマンドの代わりに下記のコマンドを記述して欲しい、ということです。
sudo sh /home/pi/10-02-stream-webcam.sh
なお、2022年4月にリリースされた OS よりデフォルトユーザー pi は廃止されています。そのため、上のコマンドの pi の部分は、皆さんが作成したユーザー名で置き換変える必要があります。すなわち、「kanamaru」というユーザーを作成したのなら、「sh /home/kanamaru/10-02-stream-webcam.sh」となります。

0 件のコメント:

コメントを投稿