Raspberry Pi 3にカメラモジュールを接続し、Python言語により静止画を取得しました。

カメラモジュール

カメラモジュールは、5メガ画素の第一世代 Omnivision OV5647で、Amazonから購入しました。カメラモジュールとその仕様を次に示します。

カメラモジュール

  • センサータイプ:OmniVision OV5647色CMOS QSXGA(5メガ画素)
  • センサーサイズ:3.67×2.74mm(1/4インチフォーマット)
  • ピクセル計算:2592×1944ピクセル
  • ピクセルサイズ:1.4×1.4μm
  • レンズ:f=3.6 mm、f/2.9

Raspberry Pi 3とカメラモジュールの接続

Raspberry Pi 3とカメラモジュールは、フレキシブルケーブルで専用バス(MIPI CSI-2)に接続し、カメラの撮影データをダイレクトにメモリに転送しています。カメラとの通信処理は BCM2837の GPUの VideoCoreが直接行います。接続するためには、基板の中央部にあるカメラコネクタの両脇のツメを引き上げ、フレキシブルケーブルの青い面を LANコネクタ側に面するように差し込みカメラコネクタの両脇のツメを押し下げてケーブルを固定します。フレキシブルケーブルをRaspberry Pi 3に接続した画像を次に示します。

Raspberry Pi 3とカメラモジュールの接続

Raspberry Pi 3へカメラモジュールのインストール方法

カメラモジュールのインストールは、Raspberry Pi 3のデスクトップGUI「PIXEL」を使用します。PIXELの画面で「Menu → 設定 → Raspberry Pi」と選択し、表示されたダイアログのインタフェースタブを選択して表示されたカメラの項目を、次のように「有効」にします(スクリーンショット:ksnapshotを使用)。

カメラモジュールのインストール

カメラモジュールの接続および動作を確認します。raspistillコマンドで静止画を取得します。静止画「image.jpg 」が保存されます。

$ raspistill -o image.jpg

取得した静止画を次のgpicviewコマンドで表示させます。

$ gpicview image.jpg

カメラモジュールを使った動画撮影(2021/05/08追加)

次のように配置してカメラモジュールで動画を撮影します。

次のraspivid コマンドで動画を取得します。動画が「video.h264」に保存されます。

$ raspivid -o video.h264 -t 10000 -fps 15 -w 1920 -h 1080
パラメータ 説明
-? ヘルプの表示
-w 画像の幅の指定 (サイズ、デフォルトは 1920)
-h 画像の高さの指定 (サイズ、デフォルトは 1080)
-b ビットレイトの設定 (例. 10MBits/s は -b 10000000)
-o 出力ファイル名 (標準出力の場合は '-o -')
-v 詳細情報の表示。
-t 撮影時間をミリ秒単位で指定。指定しない場合は5秒。0 は無効化。
-d デモモードを実行、撮影しない。
-fps フレーム/秒を指定
-e エンコード後にプレビュー画像を表示(圧縮の効果を表示)
-g 内部リフレッシュ期間を指定 (key frame rate/GoP size)

H264 形式で録画されるため、XMedia Recodeアプリによりmp4形式に変換します。変換した結果を次に示します。

カメラモジュールを使ったキャプチャプログラム

Pythonのカメラライブラリ「Picamera」を用いた次のキャプチャプログラムを使用して、横:1024ドット、 縦:768ドットの画像を捕捉します。time.sleep関数を使って、ある程度の時間プレビューを行うことでピントの調節や色の調節自動的に行ってくれるようです。

# -*- coding: utf-8 -*-
import time
import picamera

with picamera.PiCamera() as camera:
    camera.resolution = (1024, 768)
    camera.start_preview()
    time.sleep(2) #カメラ初期化
    camera.capture('image.jpg')

作成したキャプチャプログラムを使用して取得した静止画を次に示します。上下さかさまで画像を取得しています。

カメラモジュールによる静止画の捕捉

カメラモジュールのエラー「failed to enable component:ENOSPC」

カメラモジュールを使っているうちにエラーメッセージ「failed to enable component:ENOSPC」がでるようになりました。

これは、Raspberry Pi 3でカメラモジュールを認識してないらしく、vcgencmdコマンドで確認できます。

$ vcgencmd get_camera
supported=1 detected=0

この場合、カメラモジュールの「SUNNY」と書いている ラベル(上記のカメラモジュールの金色の部分)のところが外れていないか調べ、外れていたら押し込めばエラーメッセージが出ないようになります。