【Raspberry Pi】Raspberry Pi Cameraを使う

it

Raspberry Pi Cameraを使って撮影してみました。
撮影までの準備やオプションについて記載します。

記事の内容

この記事では以下の内容を記載します。
・Raspberry Pi Cameraを使って撮影
・Raspberry Pi Cameraを使う環境と準備
・Cameraコマンドのオプション
・動画(.H264)から(MP4)の変換

Raspberry Pi Camera Rev 1.3

主な仕様

静止画(w, h)2592, 1944
動画(w, h)1980, 1080
動画レート2 ~ 30fps
購入時の参考価格Ali Express \290(本体) + \160(送料)

外観

使ってみた

Raspberry Pi B型はFFC、ZERO型はFPCでの接続です。
コネクタへの接続はヒンジ部が繊細で過度な引っ張りや曲げすぎに注意が必要です。
慣れが必要な作業で、ケーブルも半勘合や斜めの接続になっていないか作業後に確認が必要です。


LX Terminalからのコマンド入力で撮影します。
オプションが多いのでやりたいこととマッチするものはこれから模索しますが、とりあえずの撮影は簡単にできます。

Raspberry Pi に別のストレージを接続することで容量不足を気にすることなく撮影できます。

動画も同じくLX Terminalから簡単に撮影できました。

動作環境にVNCを使用していますが、撮影中の画像はVNCリモート側のモニタには映らないようです。
映り映えを確認しながら作業する場合はHDMIに映して作業するか、撮影後のファイルを確認しながら作業します。

本文ではプログラムでカメラを制御して撮影しました。
GPIOに各センサー類を接続することで防犯カメラを作ったり、同じ時間に撮影してタイムラプスにしたり活用、多くのシーンで利用できます。

まとめ

Good
・安価で簡単に使用できる
・動画の撮影も簡単にできる

Bad
FPC, FFCのケーブル挿抜がむずかしい

準備

環境

実行環境は以下です。

本体Raspberry Pi 4B (4MB)
OSラズパイOS 32bit Bullseye
ストレージKIOXIA 32GB

その他に同じストレージを使って以下のRaspberry Piでも動作しました。
・Raspberry Pi Zero
・Raspberry Pi Zero WH
・Raspberry Pi 3B

ラズベリーパイをセットアップはこちらに記載します。
同じ記事でWiringPiのインストールを行っています。
一緒にインストールします。

カメラを使う設定

LX Terminalから以下コマンドを入力します。

$sudo raspi-config

「Raspberry Pi Software Configration Tool」が起動します。
カーソルキーで「3 Interface Options Configure connections to peripherals」を選んでエンター、
「I1 Legacy Camera Enable/disable legacy camera support」を選んでエンター、
「Would you like to enable legacy camera support?」に「はい」を選んでエンターを押します。
指示に従いRaspberry Pi を再起動します。

接続

注意

ケーブルには表裏があります。
挿抜の向きとコネクタのヒンジ部破損に注意して作業します。

Raspberry Pi 4B (3B)

画像は代表してRaspberry Pi 4Bの作業を撮影します。
本体とカメラをFFCケーブルで接続します。

カメラモジュール側の作業です。

コネクタの黒いヒンジ部を引きだして(青矢印)軽く赤矢印方向に軽く開けます。
強く引っ張ったり開けたりするとヒンジ部が破損します。
FFCケーブルをコネクタにまっすぐ差し込みます。
ヒンジ部を倒して(赤矢印)押し込み(青矢印)ます。
FFCの差し込みが斜めにならないように作業します。

Raspberry Pi側の作業です。

コネクタの黒いヒンジ部を引きだしてます(青矢印)。
FFCケーブルをコネクタにまっすぐ差し込みます。
ヒンジ部を水平に押し込みます(青矢印)。

Raspberry Pi Zero (W, WH, 2W)

画像は代表してRaspberry Pi Zero WHの作業を撮影します。
本体とカメラをFPCケーブルで接続します。

カメラモジュール側の作業です。

コネクタの黒いヒンジ部を引きだして(青矢印)軽く赤矢印方向に開けます。
強く引っ張ったり開けたりするとヒンジ部が破損します。
FPCケーブルの太くなっている側をコネクタにまっすぐ差し込みます。
たわみやすいので力加減に注意が必要です。
ヒンジ部を倒して(赤矢印)押し込み(青矢印)ます。
FPCの差し込みが斜めにならないように作業します。

Raspberry Pi側の作業です。

コネクタの黒いヒンジ部を引きだしてます(青矢印)。
FPCケーブルをコネクタにまっすぐ差し込みます。
ヒンジ部を水平に押し込みます(青矢印)。

使い方

静止画の撮影

説明

LX Terminalから「raspistill」コマンドを入力することで撮影します。

撮影のオプションが多くあります。
代表的なオプションについていくつか掲載します。
結果については画質の確認で「-q」オプションでの撮影結果を掲載します。

そのほかのオプションは [raspistill -?]を実行することでオプションの一覧が表示されます。

静止画オプション

パラメータ意味使用例デフォルト
-w水平画素数を設定します。
最小 16pixelから指定できるようです。
最大2592まで。
raspistill -w 6402592
-h垂直画素数を設定します。
最小 16pixcelから指定できるようです。
最大1944まで。
raspistill -h 4801944
-qjpeg 形式の画質。0(低) ~100(高)で設定します。
高い数値ほど綺麗な画像ですが、ファイルサイズが大きくなります。
ヘルプでは0から設定できるようですが、実際には0は設定できず、1からでした。
raspaistill -q 100100
-e保存するファイル形式を指定します。
jpg, bmp, gif, png
raspistill -e jpgjpg
-o保存ファイル名を設定します。raspistill -o test.jpg
-t撮影までの時間を設定します。
単位はmsです。
raspistill -t 15000
(5秒)
-kEnterキーを押したタイミングで撮影します。
Enterキーを押すたびに指定したファイルに上書き保存され続けます。
終了は’X’を入力しEnterキーを押します。

-o オプションでファイル名に%02d を含めることで、連続した番号の撮影ができます。
raspistill -k
または
raspistill -k -o test%02d.jpg
-br画像輝度を設定します。
0(真っ暗) から 100 (真っ白)で指定します。
raspistill -br 5050
(推定)
-sa彩度を設定します。
-100(グレースケール) から 100(鮮やか)で指定します。
raspistill -sa 00
(推定)
-rot画像の回転角度を指定します。
パラメータは 0, 90, 180, 270です。
カメラモジュールに対し、FPC、FFCが下になる状態が
0度で90度ごとに時計方向に画像が回転します。
raspistill -rot 1800
-vf画像を垂直方向に反転させます。raspistill -vf
-hf画像を水平方向に反転させます。raspistill -hf

撮影結果

撮影に使用したコマンドとオプションの組み合わせ
-q のオプションを数パターン変更して撮影しました。

画像サイズ(w, h) : 2592, 1944
エンコーディング : jpeg

◆画質(-q)

raspistill -q 1

画像加工フィルターをかけたような画像になりました。
ファイルサイズは105kByteです。

raspistill -q 10

若干近接でボケていますが、画質低下はあまり見られない画像です。

主観ですが、-q オプションの1 ~ 4までは画質の低下がはっきりとわかりますが、5以上の違いはあまり感じられません。
ファイルサイズは282kByteです。

動画像の撮影でオプションを変更したときのファイルサイズの参考結果です。

-q オプションファイルサイズ(kB)
1105
10282
20803
501950
1002380

◆彩度(-sa)

パラメータを-100にすることでグレースケール、100にすることで鮮やか?な風味に仕上がりました。

◆輝度(-br)

パラメータの限界値0ではブラックボックス、100ではホワイトボックスになるため限界値から各20%程度の値で撮影しました。

◆回転方向(-rot)

カメラの角度に対しての回転方向です。

動画の撮影

説明

LX Terminalから「raspivid」コマンドを入力することで撮影します。

動画オプション

パラメータ意味使用例デフォルト
-w水平画素数を設定します。
最小 32pixelから指定できるようです。
最大1980まで。
raspivid -w 6401980
-h垂直画素数を設定します。
最小 32pixcelから指定できるようです。
最大1080まで。
raspivid -h 4801080
-o保存ファイル名を設定します。raspivid -o test.h264
-t動画の撮影時間です。
単位はmsです。
raspivid -t 10005000
(5秒)
-rot画像の回転角度を指定します。
パラメータは 0, 90, 180, 270です。
カメラモジュールに対し、FPC、FFCが下になる状態が
0度で90度ごとに時計方向に画像が回転します。
raspivid -rot 900
-vf画像を垂直方向に反転させます。raspivid -vf
-hf画像を水平方向に反転させます。raspivid -hf

撮影結果

h264をmp4に変換して掲載します。
変換はVLCメディアプレーヤーを使用し変換しています。
手順は後述します。

撮影コマンドは
raspivid -o test.h264 -w 640 -h 480
途中コマ落ちしているようにも見えますが動画撮影も手軽にできました。

動画変換

(.H264)ファイルから(.MP4)への変換方法について記載します。

ラズパイOSに標準で搭載されているVLCメディアプレーヤーで動画の再生と、ファイル形式の変換を行いました。


手順
・VLCメディアプレーヤーを起動し、「ファイル > 変換/保存」をクリックします。
・メディアを開くウインドウの「+追加」ボタンにより変換元のファイルを選択します。
・「変換保存」ボタンをクリックし、変換ウインドウの「プロファイル」から変換したいフォーマットを選択します。
・「出力ファイル」で出力したいファイル名を入力し「開始」ボタンをクリックします。

プログラムから撮影

説明

開発環境には「Geany」と「WiringPi」を使います。

モーションセンサー HC-SR501を使い、センサーに反応があれば撮影します。
撮影中はLEDを点灯させます。
5秒後LEDを消灯し、モーションセンサーの検知状態に戻します。

撮影した画像は撮影ごとに値をインクリメントした[pic000.jpg]のファイル名で保存します。

配線

プログラム


#include <stdio.h>
#include <stdlib.h>
#include <wiringPi.h>

#define SENSOR_PIN	(21)
#define LED_PIN		(20)

int main(void)
{
	int Counter = 0;
	char Filename[16];
	char Command[128];
	
	wiringPiSetupGpio();
	pinMode(SENSOR_PIN, INPUT);
	pinMode(LED_PIN, OUTPUT);
	
	
	while(1)
	{
		
		if(digitalRead(SENSOR_PIN) == HIGH)
		{
			digitalWrite(LED_PIN, HIGH);
			
			sprintf(Filename, "pic%03d.jpg", Counter ++);
			sprintf(Command, "raspistill -o %s -t 200", Filename);
			system(Command);
			 
			delay(5000);
			digitalWrite(LED_PIN, LOW);
		}
	}
	return(0);
}

結果

モーションセンサーに検出されるたびに撮影されました。
実験の様子です。

コメント

タイトルとURLをコピーしました