物づくりの小部屋

個人で活躍するクリエーターになりたい現役エンジニアの行動記録

【ラズパイ】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

emboss

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__

 

PythonOpenCVのバージョンがそれぞれ表示されれば問題なくインストールされています。

今回「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を使って、より高度な画像処理にもトライしてみようと思います。

それでは、また。