【ラズパイ】Raspberry Pi4のカメラ機能をテストする(Kuman カメラモジュール SC25-JP)
こんにちは。alohaです。
Raspberry Pi4にはオプション部品としてカメラモジュールが用意されています。
今回カメラ機能のテストを行うため、Kumanのカメラモジュール「SC25-JP」を購入しました。
安価ながら、周囲の明るさを検出して自動で夜間モードに切り替えを行う優れもの。
(Amazonで¥3,399)。
今回、カメラモジュールの接続 → 撮影 → 画像処理機能の確認 を行ったので、その結果を書き残しておきます。
- カメラモジュールの接続
- 接続確認
- 静止画像の撮影
- 画像処理
- 動画撮影
- OpenCVのインストール
<カメラモジュールの接続>
Raspberry Pi4のカメラ接続コネクタの黒色のロックを上に引き上げて外し、カメラモジュールのフラットケーブルを差し込みます。その後、コネクタのロックを戻せばカメラモジュールの接続は完了です。
カメラモジュール自体は、プリント版とフラットケーブルがあるだけなので、レンズの向きを決まった姿勢に固定することができません。そこで、下の写真のようにカメラモジュールを固定する台を3Dプリンタで作成しました。
いい感じ。
<接続確認>
Rasberry Pi4側で接続したカメラモジュールを認識できるか確認します。
ターミナルを起動して以下のコマンドを実行します。
$ vcgencmd get_camera
「supported=1 detected=1」と表示されれば接続OKです。
<静止画像の撮影>
続いて、静止画像のスナップショットを撮影します。
同じくターミナルから以下のコマンドを実行すると、画面にプレビューが表示された後、
「 /home/pi 」に画像ファイルが保存されます。
$ raspistill -v -o test.jpg
部屋を暗くすると、カメラモジュールから「カチッ」と音がして夜間モードに切り替わります。テストはしていませんが、追加で赤外線ライトを追加する事で、夜間モードの撮影ができる様です。
プレビューは、Raspberry Pi4のHDMI端子にモニターが接続されている場合のみ表示されます。VNCでRaspberry Pi4にリモート接続している場合はプレビュー画面は表示されないので注意が必要です。
撮影した写真がピンぼけしている場合は、カメラモジュールのレンズを回してピントを調整しうます。
<画像処理>
静止画像を撮影できる状態になったので、撮影した写真に処理を加え、指定した解像度、ファイル名で保存するシンプルなプログラムを作成します。
#coding:utf-8 #モジュールをインポート import picamera import time with picamera.PiCamera() as camera: #解像度を指定 camera.resolution = (320,240) #プレビュー camera.start_preview() time.sleep(1) camera.stop_preview() #画像処理 #sketch, emboss, negative, pastel, gpen 等 camera.image_effect ="sketch" #ファイルに保存 camera.capture("test_picture.jpg")
プログラムの19行目で撮影した写真に処理を加えています。
画像処理の例は以下の通りです。
処理なし
sketch
negative
pastel
gpen
<動画撮影>
カメラモジュールを使うことで動画の撮影もできます。
以下のテストプログラムでは、10秒間の録画を行い、プログラムと同じフォルダに動画ファイルを作成します。
#coding: utf-8 #モジュールのインポート import picamera import time with picamera.PiCamera() as camera: #解像度を指定 camera.resolution = (320,240) #録画開始 camera.start_preview() camera.start_recording(output = "test_movie.h264") #録画時間は10秒 camera.wait_recording(10) #録画停止 camera.stop_preview() camera.stop_recording()
<OpenCVのインストール>
プログラミングでカメラで撮影した画像を取り扱うようになると、OpenCVを使えるようにしておくと何かと便利です。OpenCVはフリーの画像処理ライブラリで、Pythonでも使用できるので、早速Raspberry Pi4にインストールしてみます。
ターミナルを起動し、以下のコマンドを実行するとOpenCVをインストールできます。
$ pip3 install opencv-python
OpenCVがインストールされたかどうかを確認するには、ターミナルに以下のコマンドを入力します。
$python3 >>> import cv2 >>> cv2.__version__
PythonとOpenCVのバージョンがそれぞれ表示されれば問題なくインストールされています。
今回「import cv2」を実行した際に以下のエラーが出ました。
ImportError: numpy.core.multiarray failed to import
Googleで調べてみると、インストールされている「numpy」が古い事が原因の様です。
以下のコマンドで「pipのアップデート」、「numpyのアップデート」を行う事で解決しました。
$ pip3 install --upgrade pip $ pip3 install numpy --upgrade
OpenCVが使える様になったので、テストプログラムを作成してみます。
プログラムが保存されているフォルダと同じフォルダに置かれたjpegファイルを読み込み、画面に表示するプログラムです。
#モジュールのインポート import cv2 #jpegファイルの読み込み img = cv2.imread("test_picture.jpg") #画像ファイルの表示 cv2.imshow("test-output",img) cv2.waitKey(0)
<まとめ>
Raspberry Pi4のカメラ機能のテストとして、カメラモジュールの接続 → 撮影 → 画像処理機能をテストしてみました。
画像処理機能は、命令文1行で撮影した画像に様々な効果を追加できるので、おもしろ画像が簡単に作成できて良いですね。
今後はOpenCVを使って、より高度な画像処理にもトライしてみようと思います。
それでは、また。