■ 検証環境
・ Ubuntu 12.04LTS
・ USB カメラ (UVC互換) 1871:0306 Aveo Technology
動作確認
USBデバイスの認識状態を確認する。
$ sudo lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 003: ID 04f2:0841 Chicony Electronics Co., Ltd
Bus 002 Device 003: ID 046d:c52f Logitech, Inc. Wireless Mouse M305
Bus 001 Device 009: ID 1871:0306 Aveo Technology Corp.
VLCでカメラの動作を確認
VLCメディアプレーヤーの「メディア」メニュー → 「キャプチャーデバイスを開く」を実行し、
・キャプチャモード : Video for Linux 2
・ビデオデバイス : “空欄”のまま放置か、“/dev/video0”を指定
ffmpegコマンドでjpegファイルに保存する
カメラが安定するまで5秒待ってから(-ss 5)キャプチャを行う。
$ ffmpeg -ss 5 -f video4linux2 -s 640x480 -i /dev/video0 -vframes 1 ./test.jpg
結構薄暗い夕闇でも、カメラ起動から5秒程度の時間を置けば、このレベルで撮影できます。
fswebcamコマンドでjpegファイルに保存する
$ fswebcam -D 3 -S 100 -v -r 640x480 test.jpg
-D スイッチは、撮影開始までのディレイ秒数。 -S は撮影時にスキップするフレーム数。 50〜100フレーム程度をスキップして、このカメラ(Aveo Technology)の露光が成功する。
fswebcamコマンドで設定できるパラメータ
$ fswebcam --list-controls --- Opening /dev/video0... Trying source module v4l2... /dev/video0 opened. No input was specified, using the first. Available Controls Current Value Range ------------------ ------------- ----- Brightness 28 (28%) 0 - 100 Contrast 63 (63%) 0 - 100 Saturation 3 0 - 4 Gamma 3 1 - 8 Power Line Frequency 50 Hz Disabled | 50 Hz | 60 Hz Sharpness 10 (10%) 0 - 100 Backlight Compensation 0 0 - 1 Adjusting resolution from 384x288 to 352x288. --- Capturing frame... Captured frame in 0.00 seconds. --- Processing captured image... There are unsaved changes to the image.
または
$ v4l2-ctl -L brightness (int) : min=0 max=100 step=1 default=28 value=28 contrast (int) : min=0 max=100 step=1 default=63 value=63 saturation (int) : min=0 max=4 step=1 default=3 value=3 gamma (int) : min=1 max=8 step=1 default=3 value=3 power_line_frequency (menu) : min=0 max=2 default=1 value=1 0: Disabled 1: 50 Hz 2: 60 Hz sharpness (int) : min=0 max=100 step=1 default=10 value=10 backlight_compensation (int) : min=0 max=1 step=1 default=0 value=0
これらのコマンドで出力された、カメラごとに違う設定項目をfswebcam実行時に指定することができる。ただし、Aveo Technologyのカメラでは設定を行うとエラーとなった。
$ fswebcam -D 3 -S 50 --set Brightness=125 --set Contrast=50 -v -r 640x480 test.jpg
キャプチャ最大解像度を知るには
$ lsusb -d 1871:0306 -v | less
wWidth, wHeight に解像度が表示されいてる。