Raspberry Pi 3 とウェブカメラ(ロジクール C270)
スポンサーリンク
ラズパイに1,000円前後で購入できるWebカメラを接続してみました。
特に目新しさはないですが、せっかくなので。
LOGICOOL ウェブカム HD画質 120万画素 C270
- 出版社/メーカー: ロジクール
- 発売日: 2010/08/20
- メディア: Personal Computers
- 購入: 21人 クリック: 267回
- この商品を含むブログ (21件) を見る
ロジクールのC270。120万画素、固定フォーカス、焦点距離は40cm以上、という商品です。最近のスマホに比べると圧倒的にしょぼいですが、価格からするとかなりの健闘ぶりです。
一昔前のガラケーにしても100万画素未満でも本体価格は1万円という時期*1があったことを考えると感慨深いです。
環境
- Raspbian GNU/Linux 8 (jessie)
- Raspberry Pi 3 model B
- ロジクール C270
※ 過去記事で取り付けたタッチパネルはひとまず取り外しています。
接続
何も考えずにUSBケーブルを繋ぐだけでOK。
$ lsusb Bus 001 Device 004: ID 093a:2510 Pixart Imaging, Inc. Optical Mouse Bus 001 Device 006: ID 046d:0825 Logitech, Inc. Webcam C270 Bus 001 Device 005: ID 1a2c:0e24 China Resource Semico Co., Ltd Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
2行目の通り、正しく認識されている。
動作確認
fswebcam
GUI ツールでもいいのだけれど、とりあえず一番手軽そうなやつ。
ネタ元:Using a standard USB webcam - Raspberry Pi Documentation
apt
でインストール。
$ sudo apt install fswebcam
実行例
$ fswebcam test.jpg --- Opening /dev/video0... Trying source module v4l2... /dev/video0 opened. No input was specified, using the first. Adjusting resolution from 384x288 to 352x288. --- Capturing frame... Captured frame in 0.00 seconds. --- Processing captured image... Writing JPEG image to 'test.jpg'.
初期状態の解像度は352x288?
オプションで解像度を指定してみます。
$ fswebcam -r 1280x720 test2.jpg --- Opening /dev/video0... Trying source module v4l2... /dev/video0 opened. No input was specified, using the first. --- Capturing frame... Captured frame in 0.00 seconds. --- Processing captured image... Writing JPEG image to 'test2.jpg'.
ちょっと文字の読み取りは厳しいのかも。ピントが合えばなんとかなるのでしょうか。
gucview
カメラのパラメーターを調整できるGUIツール。サウンド周りの警告が出ていますがひとまず動作はしました。
- 開発元サイト:GTK+ UVC Viewer
$ sudo apt install guvcview
オプションなしで起動する。
$ guvcview &
起動すると下記のように制御ウィンドウとカメラからの入力が表示される。
音声関係で警告メッセージが出力される。どうもPulseAudioからマイク音声が拾えていない。また、動画を保存しようとするといきなり終了してしまった…。要調査。
静止画を撮影すると以下のような感じ。
motion
カメラに映った被写体の動きを検出できるというソフト。ちょっとした監視カメラとして運用できると思われる。
なお、設定変更にvi
エディタを使っていますが、nano
というエディタでも支障はないです。
インストールは下記の通り。
$ sudo apt install motion
動作確認がしたいだけなので、デーモンではなく、かつ、被写体の動きを検出する機能もオフにして起動してみる。
$ sudo motion -n -m
-n
が'non-demo mode'、普通のコマンドどして連続実行。-m
は動体検出(動き検出)をオフにして起動するオプション。
初期設定ではローカルホストからしか接続を受け付けないので、ラズパイのデスクトップ環境からブラウザで、ローカルホストの8081
番ポートにアクセスすると画像が見れる。
また、ポート8080番が制御用のURLになっている。ここからスナップショットを保存させたりできる。スナップショットは/var/lib/motion
以下に保存される。
終了させる場合は、コンソールでCtrl+c
を入力するか、ブラウザで8080
番ポートにアクセスして停止させる。
設定ファイルは
- /etc/motion/motion.conf
- /etc/default/motion
デーモンとして常時稼働させるならローカルホスト以外からアクセスできるように設定を変える。変更の要点は以下のとおり。
- 画像の高さと幅を指定
- 画像のクオリティに関するパラメーターをいじる
- ローカルホストから画像を確認できるようにする
- systemctl からサービスとして起動できるようにする。
$ sudo vi /etc/motion/motion.conf
変更箇所のみ抜粋。
# Image width (pixels). Valid range: Camera dependent, default: 352 width 640 # Image height (pixels). Valid range: Camera dependent, default: 288 height 480 # Maximum number of frames to be captured per second. # Valid range: 2-100. Default: 100 (almost no limit). framerate 10 # The quality (in percent) to be used by the jpeg compression (default: 75) quality 95 # Quality of the jpeg (in percent) images produced (default: 50) stream_quality 75 # Restrict stream connections to localhost only (default: on) stream_localhost off
デーモンとして実行するために下記のファイルも修正する*2。
$ sudo vi /etc/default/motion
修正箇所は一箇所のみ。"no"を"yes"に変更する。これをしないとバックグラウンドで動作しない。
start_motion_daemon=yes
出力先ディレクトリの所有者をmotion
というユーザーに変更*3。
$ sudo chown -R motion.video /var/lib/motion/
サービスとして起動。
$ sudo systemctl start motion
ラズパイを起動する際に自動で動かしたいなら、サービスとして有効化しておく。
$ sudo systemctl enable motion
本気で運用するなら保存するデータ量の設定やアクセス制御をちゃんと設定する必要あり。公式サイトのドキュメントを参照のこと。
(一応書いておくと)停止させる場合は、以下のとおり。
$ sudo systemctl stop motion
サービスとして無効化する場合は同じ要領で、
$ sudo systemctl disable motion
とする。まあ蛇足ですか。
参考:[Raspberry Pi]motionでお手軽監視カメラをつくる – hello-world.jp.net
まとめ
とりあえず動作することは確認できたので、あとはPython+OpenCVの構成でプログラムからカメラを活用して何か作ろうという計画です。
欲を言うならもうちょっと画素数の多いカメラが欲しいところですが、行けるところまでやってみようかと思います。