ラズパイのカメラモジュールに赤外線LEDモジュールを追加して夜間撮影
Contents
カメラモジュール
以前に購入したKumanのRaspberry Pi用のカメラモジュールにHomylの赤外線LEDモジュールを追加して日中及び夜間の撮影をしてみた時の備忘録。
最初に購入したのがこちらの日中と夜間モードが切り替えられるKumanのRaspberry Pi用カメラモジュール。
左手手前にフォトレジスタ(光センサー)があり日中と夜間モードが自動的に切り替わる。
また左右に4箇所(左手前はフォトレジスタに隠れていて見えない)に赤外線LEDまたはフラッシュLEDが接続可能な端子があったので別に購入した赤外線LEDを接続してみた。
スペック
カメラのスペックは以下の通り。
カメラの仕様 | 静止画像:2592×1944ピクセル 動画:1080 p(30 fps)、720p(60 fps)、640 x 480 p(60/90pfs)
|
赤外線カットフィルター | IRカットフィルター内蔵 赤外線カットフィルターの役割は昼間には太陽光に含まれる赤外線をカットして肉眼と同じようなカラー映像を撮影する そして夜間は赤外線LED(別途取り付け)を照射して赤外線はカットせずに白黒映像を撮影する |
フォトレジスタ | 前述したがフォトレジスタで明るさを検知して昼夜の自動切り替えを行う 切り替わった時にカチッと音が鳴った |
外部電源 | 3.3V外部電源をサポートとあった 手前に赤黒のリード線があるがそこから別途電源を供給することが出来るという意味なのだろうか。。。 とりあえずカメラケーブルをRaspberry Pi 3 B+に接続してラズパイから電源供給を行うことにした |
フォーカス | 被写体の距離に応じて焦点距離を自動調整できるとあった またカメラのレンズ部分を回すとフォーカスが変わる |
赤外線LED
続いてHomylの赤外線LED(2個セット)を追加で購入した。
これをカメラの両端にビスとナットで固定する。
スペック
スペックは以下の通り。
電力 | 1W 3Wの製品もあったのだが品切れだったのと、かなり熱くなるとあったので1Wの製品を購入したのだが1WでもLED裏側がかなり熱くなっていた |
フォトレジスター | こちらにもフォトレジスターが付いていて周囲の明るさを測定できる |
しきい値制御 | 赤外線LEDを切り替える為の周囲の明るさのしきい値を制御するための抵抗器 |
接続
赤外線LEDに付属のビスとナットでカメラと接続をしてラズパイに接続した所。
周囲を暗くすると赤外線LEDがうっすらとピンク色に光っているように見える。
赤外線は目に見えないはずなので可視光も出しているのだと思う。
接続と有効化
カメラモジュールとラズパイとの接続はこちらの記事を参照して欲しい。
またRaspberry Piの設定にてカメラを有効化する必要があるのだがそれについてもこちらの記事を参照して欲しい。
プログラム
静止画像の撮影や動画の撮影は下記のコマンドで撮影が可能。
それぞれcamera.jpgとvideo.h264のファイルに保存する。
また-t 10000は10秒を表している。
静止画:raspistill -o camera.jpg
動画:raspivid -o video.h264 -t 10000
Pythonの動画撮影用のテストプログラムも載せておく。
# -*- coding: utf-8 -*-
"""
Created on Sun Aug 23 10:49:21 2020
赤外線LEDカメラのテスト
@author: Souichirou Kikuchi
"""
from picamera import PiCamera
import datetime as dt
import os
from time import sleep
INTERVAL = 10 # 録画時間
class InfraredCameraClass: # 赤外線LEDカメラのクラス
def __init__(self):
self.camera = PiCamera()
def start_recordings(self): # 録画開始
__time_stamp_file = "{0:%Y-%m-%d-%H-%M-%S}".format(dt.datetime.now()) # 日付時刻をセット
self.save_file_path = "video" + __time_stamp_file + ".h264" # ディレクトリ、ファイル名をセット
self.camera.annotate_text = __time_stamp_file # 映像上部に表示
self.camera.annotate_text_size = 24 # 録画画像上部に表示される注釈文字のサイズ
self.camera.start_recording(self.save_file_path) # 指定pathに録画
return True
def stop_recordings(self): # 録画終了
self.camera.stop_recording() # 録画終了
return True
def close_camera(self): # カメラクローズ
self.camera.close()
#main
try:
if __name__ == "__main__":
print('---program start ---')
os.chdir(os.path.dirname(os.path.abspath(__file__))) # カレントディレクトリをプログラムのあるディレクトリに移動する
infr_camara = InfraredCameraClass()
rec = infr_camara.start_recordings() # 録画開始
sleep(INTERVAL)
rec = infr_camara.stop_recordings() # 録画終了
except KeyboardInterrupt:
pass
finally:
infr_camara.close_camera()
print('---program end ---')
撮影結果
静止画と動画でそれぞれ昼と夜で同じ場所を撮影した。
静止画
昼間
昼間の自然光での本棚、距離80cm。
昼間の自然光での道路を撮影、道路までの距離は約6m。
夜間
夜間の本棚(距離80cm)。
「Pythonで始める機械学習」やOrallyの「ゼロから始めるDeep Learning」など赤色の背表紙の文字が読み取りにくくなっている一方、白地に黒の文字ははっきりと読み取れる。
夜間の道路。
左手前に白く見えるのはウッドデッキの手すり。
雨が降っていた事もあり1Wの赤外線LEDではかなり厳しい状況。
動画・昼夜比較
昼夜の動画での比較。
約6mの距離と2.8mの距離とで比較をしている。
また夜は雨が降っていたのでビニール傘をさしているので若干同じ条件では無い。
やはり6mの距離では薄っすらと輪郭が見える程度だ。
通常のカメラでは真っ暗で何も映らないのでそれに比べれば写っている方なのかも知れないが、はっきりと輪郭が映るのはおよそ3m~4mの距離までだと思う。
もし夜間に動物などを撮影したいのであれば3m以内の距離にするか赤外線LEDの電力をもう少し上げる必要があると思う。
以上で今回の記事を終了とする。
この記事が何処かで誰かの役に立つことを願っている。
尚、当記事中の商品へのリンクはAmazonアソシエイトへのリンクが含まれています。Amazonのアソシエイトとして、当メディアは適格販売により収入を得ていますのでご了承ください。
1件の返信
[…] ラズパイのカメラモジュールに赤外線LEDモジュールを追加して夜間撮影 […]