ELPのUSBカメラ。実にたくさん所有しています。安くてきちんと動作する良きUSBカメラです。
Raspberry Pi 5でUbuntu24.04で接続しました。v4l-utilsでカメラを操作するときのメモです。まずELPのUSBカメラの認識を確認します。ELPはUSB接続のいわゆる中華カメラです。Amazonなどで販売されています。
種類によって項目はそれぞれ若干ことなりますが、おおむね大体似たような項目になっていると思います。露出オートやマニュアルの切り替え、明るさやホワイトバランスなどubuntuのターミナルからの操作方法となります。ELPというよりv4l-utilsの操作ですね。
ELPのUSBカメラメーカサイト
https://www.webcamerausb.com/
lsusb
Bus 002 Device 002: ID 05a3:9230 ARC International Camera
Bus 004 Device 002: ID 32e4:9230 HD USB Camera HD USB Camera
v4l-utilsをインストールします。
sudo apt install v4l-utils
list-devicesで接続されているカメラを確認します。
v4l2-ctl --list-devices
USB 2.0 Camera: HD USB Camera (usb-xhci-hcd.0-2):
/dev/video2
HD USB Camera: HD USB Camera (usb-xhci-hcd.1-1):
/dev/video0
/dev/video0などの情報からカメラのフォーマットを確認します。
v4l2-ctl --device=/dev/video0 --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
Type: Video Capture
[0]: 'MJPG' (Motion-JPEG, compressed)
Size: Discrete 1920x1080
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 1280x720
Interval: Discrete 0.017s (60.000 fps)
Size: Discrete 1024x768
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 640x480
Interval: Discrete 0.008s (120.101 fps)
Size: Discrete 800x600
Interval: Discrete 0.017s (60.000 fps)
Size: Discrete 1280x1024
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 320x240
Interval: Discrete 0.008s (120.101 fps)
[1]: 'YUYV' (YUYV 4:2:2)
Size: Discrete 1920x1080
Interval: Discrete 0.167s (6.000 fps)
Size: Discrete 1280x720
Interval: Discrete 0.111s (9.000 fps)
Size: Discrete 1024x768
Interval: Discrete 0.167s (6.000 fps)
Size: Discrete 640x480
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 800x600
Interval: Discrete 0.050s (20.000 fps)
Size: Discrete 1280x1024
Interval: Discrete 0.167s (6.000 fps)
Size: Discrete 320x240
Interval: Discrete 0.033s (30.000 fps)
次はカメラのユーザーコントロールこと設定情報を調べてみます。
v4l2-ctl --device=/dev/video2 --list-ctrls
User Controls
brightness 0x00980900 (int) : min=-64 max=64 step=1 default=0 value=0
contrast 0x00980901 (int) : min=0 max=64 step=1 default=32 value=32
saturation 0x00980902 (int) : min=0 max=128 step=1 default=60 value=60
hue 0x00980903 (int) : min=-40 max=40 step=1 default=0 value=0
white_balance_automatic 0x0098090c (bool) : default=1 value=0
gamma 0x00980910 (int) : min=72 max=500 step=1 default=100 value=100
gain 0x00980913 (int) : min=0 max=100 step=1 default=0 value=0
power_line_frequency 0x00980918 (menu) : min=0 max=2 default=1 value=1 (50 Hz)
white_balance_temperature 0x0098091a (int) : min=2800 max=6500 step=1 default=4600 value=4500
sharpness 0x0098091b (int) : min=0 max=6 step=1 default=2 value=2
backlight_compensation 0x0098091c (int) : min=0 max=2 step=1 default=1 value=1
Camera Controls
auto_exposure 0x009a0901 (menu) : min=0 max=3 default=3 value=1 (Manual Mode)
exposure_time_absolute 0x009a0902 (int) : min=1 max=5000 step=1 default=157 value=100
exposure_dynamic_framerate 0x009a0903 (bool) : default=0 value=0
上記の設定情報について解説とそれぞれの設定変更コマンドを掲載します。これは実行するとその設定値が保存されます。初期設定に戻すのはマニュアルで戻す必要があります。
・brightness (輝度):min=-64, max=64, step=1
輝度を調整します。値を増減させることで映像の明るさが変わります。
v4l2-ctl --device=/dev/video0 --set-ctrl=brightness=0
・contrast (コントラスト):min=0, max=64, step=1
コントラストを調整します。値を高くすると、明暗の差がはっきりします。
v4l2-ctl --device=/dev/video0 --set-ctrl=contrast=32
・saturation (彩度):min=0, max=128, step=1
色の鮮やかさを調整します。値を高くすると、色がより鮮明になります。
v4l2-ctl --device=/dev/video0 --set-ctrl=saturation=60
・hue (色相):min=-40, max=40, step=1
色相を調整します。値を変更すると、色合いが変わります。
v4l2-ctl --device=/dev/video0 --set-ctrl=hue=0
・white_balance_automatic (自動ホワイトバランス)
オン (1) またはオフ (0) を選択できます。オンの場合、カメラが自動的に色温度を調整します。
v4l2-ctl --device=/dev/video0 --set-ctrl=white_balance_automatic=1
・gamma (ガンマ):min=72, max=500, step=1
ガンマ値を調整して、中間色の明るさを制御します。
v4l2-ctl --device=/dev/video0 --set-ctrl=gamma=100
・gain (ゲイン):min=0, max=100, step=1
映像のゲイン(感度)を調整します。値を高くすると、暗い環境での視認性が向上しますが、ノイズが増える可能性があります。
v4l2-ctl --device=/dev/video0 --set-ctrl=gain=0
・power_line_frequency (電源周波数)
選択肢: 0 (オフ), 1 (50 Hz), 2 (60 Hz)
電源周波数によるフリッカー(ちらつき)を防ぎます。
v4l2-ctl --device=/dev/video0 --set-ctrl=power_line_frequency=1
・white_balance_temperature (ホワイトバランス温度):min=2800, max=6500, step=1
色温度を手動で調整します。値を変えることで、色味が変わります。
v4l2-ctl --device=/dev/video0 --set-ctrl=white_balance_temperature=5000
・sharpness (鋭さ):min=0, max=6, step=1
映像のエッジの鋭さを調整します。
v4l2-ctl --device=/dev/video0 --set-ctrl=sharpness=3
・backlight_compensation (バックライト補正):min=0, max=2, step=1
逆光時の映像を改善するための設定です。
v4l2-ctl --device=/dev/video0 --set-ctrl=backlight_compensation=2
・Camera Controls:auto_exposure (自動露出)
1がマニュアル、3がオート
露出モードを選択します。マニュアルモードでは露出時間を自分で設定できます。
v4l2-ctl --device=/dev/video0 --set-ctrl=auto_exposure=1
・exposure_time_absolute (露出時間):min=1, max=5000, step=1
マニュアル露出モード時に露出時間をミリ秒単位で設定します。露出オート時には無効です。
v4l2-ctl --device=/dev/video0 --set-ctrl=exposure_time_absolute=1
・exposure_dynamic_framerate (露出によるフレームレート調整)
bool型で、オン (1) またはオフ (0)
露出時間に基づいてフレームレートが動的に調整されるかどうかを設定します。
v4l2-ctl --device=/dev/video0 --set-ctrl=exposure_dynamic_framerate=1