Arducam imx519のフォーカス制御を試す
前回記事に引き続き、imx519のマニュアルフォーカス制御について簡単にまとめておきます。
やり方
とりあえず、使えそうなソースが公式にあるので拾ってきます。
cd ~
wget https://github.com/ArduCAM/Arducam-Pivariety-V4L2-Driver/raw/master/focus/Focuser.py
wget https://github.com/ArduCAM/Arducam-Pivariety-V4L2-Driver/raw/master/focus/v4l2_utils.py
前回作ったスクリプトを改良します。(Focuser.py,v4l2_utils.pyと同じディレクトリにスクリプトを作成して下さい。)
focuser.set(Focuser.OPT_FOCUS,xxx)でフォーカス値をセットできます。
xxxの範囲は0~4095です。
反映までラグがあるのでセットしたら適当なsleepが必要。
現在の値がほしい場合はfocuser.get(Focuser.OPT_FOCUS)で取得できます。
#2022年3月15日にpicamera2の大幅な変更があったので一部修正しました
#from picamera2 import *
from picamera2.picamera2 import *
#from null_preview import *
from time import sleep
from Focuser import Focuser
picam2 = Picamera2()
picam2.start_preview()
#preview = NullPreview(picam2)
preview_config = picam2.preview_configuration()
capture_config = picam2.still_configuration()
picam2.configure(preview_config)
picam2.start()
focuser = Focuser('/dev/v4l-subdev1')
sleep(2)
focuser.set(Focuser.OPT_FOCUS,1700)
sleep(0.5)
picam2.switch_mode_and_capture_file(capture_config, "test1.jpg")
focuser.set(Focuser.OPT_FOCUS,4095)
sleep(0.5)
picam2.switch_mode_and_capture_file(capture_config, "test2.jpg")
また、実行時にFocuser.pyで「KeyError: 'default'」が発生する場合がありました。以前確認した時は出なかったので、imx519のドライババージョンとかによるものかもしれないです。
とりあえずFOCUSのデフォルト値を定義するキーが見つからないっぽい・・・
v4l2_utils.pyを実行するとキーは'default'ではなく'default_value'で定義されていることがわかります。
なのでFocuser.pyを開いてdefault_valueに修正すると動くようになります。
撮った写真はこんな感じです。
意外と接写できます。
ArducamカメラのサンプルコードはGitにも上げておきます。
忙しい人向け
忙しい人は下記でお試しください。
git clone https://github.com/ArcanaMfg/Arducam.git
python Arducam/ManualFocusTest/FocusTest.py
以上、Arducam imx519のフォーカス制御の紹介でした。
よろしければこちらの記事も参考にしてください。
この記事が気に入ったらサポートをしてみませんか?