MawaLog

一日一日、楽しく生きる。技術と音楽が好き。

開発日誌:ラズパイ+AWS S3でネットワークカメラもどきを作ってみるvol.2:カメラをPythonで制御

これを使って遊びます。

Raspberry Pi Camera V2

Raspberry Pi Camera V2

今までの経緯

k-mawa.hateblo.jp

前回はカメラを機能するようにしたので、今回はPythonコードで制御できるようにしたよ。

手順

1:まずは、python-picameraというモジュールをOSにインストール。

apt-getで行う。

[ユーザー名]:~/py3env $ sudo apt-get install python-picamera
[sudo] password for [ユーザー名]: 
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
python-picamera はすでに最新版です。
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  libasn1-8-heimdal libgssapi3-heimdal libhcrypto4-heimdal
  libheimbase1-heimdal libheimntlm0-heimdal libhx509-5-heimdal
  libkrb5-26-heimdal libroken18-heimdal libwind0-heimdal libxfce4ui-1-0
  xfce-keyboard-shortcuts
これを削除するには 'apt-get autoremove' を利用してください。
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 10 個。

なんかすでに入っていた模様・・・問題は特になし。では次。

2:仮想環境に移行

(ラズパイでの仮想環境の構築方法はこちら→ Raspbian(RaspberryPi)でvirtualenvを導入したときのメモ - まわ )

[ユーザー名]:~/py3env $ ls
bin  include  lib  pip-selfcheck.json
[ユーザー名]:~/py3env $ source ./bin/activate
(py3env) [ユーザー名]:~/py3env $ ls
bin  include  lib  pip-selfcheck.json

3:とりあえず動作確認・・・

(py3env) [ユーザー名]:~/py3env $ python
Python 3.4.2 (default, Oct 19 2014, 13:31:11) 
[GCC 4.9.1] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import picamera
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named 'picamera'
>>> exit()

あれ、"picamera"ってモジュールが無いと来た。試しにpip3で入れてみる。

4:picameraをインストール

今度はapt-getでなくpip3で入れる。

(py3env) [ユーザー名]:~/py3env $ pip3 install picamera
Collecting picamera
  Downloading picamera-1.13.tar.gz (143kB)
    100% |████████████████████████████████| 153kB 899kB/s 
Building wheels for collected packages: picamera
  Running setup.py bdist_wheel for picamera ... done
  Stored in directory: /home/[ユーザー名]/.cache/pip/wheels/bd/5f/88/3109bd5aa7e6c5cf62d71d6cbf444d46a9d932df4af35f2071
Successfully built picamera
Installing collected packages: picamera
Successfully installed picamera-1.13

オッ、行けたっぽい。再度pythonシェルへ。

5:カメラをPythonコードで制御

以下のように打つと・・・

(py3env) [ユーザー名]:~/py3env $ python
Python 3.4.2 (default, Oct 19 2014, 13:31:11) 
[GCC 4.9.1] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import picamera
>>> cam = picamera.PiCamera()
>>> cam.resolution = (640,480) 

#↑撮影画像の縦横ピクセルを指定可能

>>> cam.capture(test_by_python.jpg)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'test_by_python' is not defined 
#↑captureするファイル名は""でくくって文字列と明示が必要
>>> cam.capture("test_by_python.jpg")
>>> exit()

撮れてるかファイルを確認すると、

(py3env) [ユーザー名]:~/py3env $ ls
bin  include  lib  pip-selfcheck.json  test_by_python.jpg

できてる。実際に画像も撮れていた。OK。次は、botoでS3にアップだな。