Raspberry Pi Camera Module V2 の使い方 (Python 3)
Raspberry pi 公式が販売しているカメラモジュール Camera Module V2 を使ってみたメモ
https://www.raspberrypi.org/products/camera-module-v2/
参考にしたもの
公式の情報
Getting started with the Camera Module - Introduction | Raspberry Pi Projects
先人の情報
PythonでRaspberry Pi カメラを制御する
【Raspberry Pi】Camera Module V2を接続する
環境
- Raspberry Pi 3 model B+
- Python 3.7.0
モジュールの準備
何はともあれ、Raspberry Pi 3 と カメラモジュールを接続します
こちらが詳しいです。向きなどに注意しましょう
次に、raspi-config > 5. Iterfacing Options > P1. Cameraからカメラを有効にしましょう
Pythonからの操作方法
picameraパッケージのインストール
% pip install --upgrade pip % pip install picamera
写真を撮影する
from picamera import PiCamera from time import sleep camera = PiCamera() camera.resolution = (800, 600) camera.start_preview() sleep(2) camera.capture("./image.jpg") camera.stop_preview()
camera.resolution(width, height)
で撮影する写真のサイズを指定camera.start_preview()
でカメラを起動(ラズパイがディスプレイに接続されていると確認できる)cmera.capture([保存したい場所])
で写真を撮影できるcamera.stop_preview()
でカメラを終了する
基本的な使い方はこれだけ。
こんな感じで撮影できましたか?
動画の録画
動画も撮影できます。
from picamera import PiCamera from time import sleep camera = PiCamera() camera.resolution = (800,600) camera.start_preview() camera.start_recording("./movie.h264") sleep(10) camera.stop_recording() camera.stop_preview()
動画も写真とほぼ同様の手順で録画できます。異なるのは、
camera.start_recording([保存する場所])
で録画開始sleep([秒数])
で何秒間録画するかを指定camera.stop_recording()
で録画停止
の部分だけ。
エフェクト
なぜか多種類のエフェクトが用意されています。ぜひ活用してみましょう。
使用できるエフェクトは以下の通りです。
>>> camera.IMAGE_EFFECTS {'none': 0, 'negative': 1, 'solarize': 2, 'sketch': 6, 'denoise': 7, 'emboss': 8, 'oilpaint': 9, 'hatch': 10, 'gpen': 11, 'pastel': 12, 'watercolor': 13, 'film': 14, 'blur': 15, 'saturation': 16, 'colorswap': 17, 'washedout': 18, 'posterise': 19, 'colorpoint': 20, 'colorbalance': 21, 'cartoon': 22, 'deinterlace1': 23, 'deinterlace2': 24}
使用する場合は次のように指定します。
camera.image_effect = "[エフェクト名]"
具体例
テキストを挿入する
以下のようにすることで、写真や動画にテキストを表示できます。
camera.annotate_text_size = [フォントサイズ] camera.annotate_text = [表示したいテキスト]
注意すること
サイズの限度
写真の場合は2592 x 1944で、動画の場合は1920 x 1080までです。
また、最大解像度での撮影を行う際は、
camera.framerate = 15
でフレームレートを15
に設定する必要があります。
ファイルフォーマット
写真のフォーマットを変更することもできます。
変更したいときは以下のように指定する。
camera.capture("[ファイルパス]", format="[フォーマット名]")
利用できるフォーマットは以下の通り。
jpeg, png, gif, bmp, yuv, rgb (24-bit RGB), rgba (32-bit RGBA), bgr (24-bit BGR), bgra (32-bit BGRA), raw
動画も同様にフォーマットを変更できます。
camera.start_recording("[ファイルパス]",format="[フォーマット名]")
利用できるフォーマットは以下の通り
h264, mjpeg, yuv (YUV420), rgb (24-bit RGB), rgba (32-bit RGBA), bgr (24-bit BGR), bgra (32-bit BGRA)
カメラを起動してからの待ち時間
公式には、カメラを起動してから最低2秒間は明るさの調整のために待てと書いてあります
試しに0秒から1秒おきに撮影してみました。
0秒時点
1秒時点
2秒時点
確かに0秒時点での写真は全体的に暗く青みがかって見えます。1秒時点と2秒時点の画像もよーく見ると違いますが、そこまで大きな違いは無さそうです。
この辺りは目的に合わせて調整しよう。
画像が180度回転していたら
今回の環境では問題なかったが、上下逆さに撮影されてしまう場合は以下のように指定することで画像を回転できます
camera.rotation = 180
とりあえず主要な機能はこんなところでしょう
詳しい内容は以下で確認できます
10. API - picamera.camera Module — Picamera 1.10 documentation