デジカメだと取込みが面倒。WebCamで撮影できないか試してみた。
必要なもの
- Raspberry pi 3 Model B
- セルフパワーUSB2.0ハブ
- logicool C200
接続確認
WebCamが認識されていることを確認する。
$ lsusb ... Bus 001 Device 012: ID 046d:0802 Logitech, Inc. Webcam C200 ...
撮影
fswebcam
インストール
$ sudo apt-get install fswebcam
この操作後に追加で 105 kB のディスク容量が消費されます。
バージョン確認
$ fswebcam --version fswebcam 20140113
ヘルプ確認
$ fswebcam --help Usage: fswebcam [<options>] <filename> [[<options>] <filename> ... ] Options: -?, --help Display this help page and exit. -c, --config <filename> Load configuration from file. -q, --quiet Hides all messages except for errors. -v, --verbose Displays extra messages while capturing --version Displays the version and exits. -l, --loop <seconds> Run in loop mode. -b, --background Run in the background. -o, --output <filename> Output the log to a file. -d, --device <name> Sets the source to use. -i, --input <number/name> Selects the input to use. -t, --tuner <number> Selects the tuner to use. -f, --frequency <number> Selects the frequency use. -p, --palette <name> Selects the palette format to use. -D, --delay <number> Sets the pre-capture delay time. (seconds) -r, --resolution <size> Sets the capture resolution. --fps <framerate> Sets the capture frame rate. -F, --frames <number> Sets the number of frames to capture. -S, --skip <number> Sets the number of frames to skip. --dumpframe <filename> Dump a raw frame to file. -s, --set <name>=<value> Sets a control value. --revert Restores original captured image. --flip <direction> Flips the image. (h, v) --crop <size>[,<offset>] Crop a part of the image. --scale <size> Scales the image. --rotate <angle> Rotates the image in right angles. --deinterlace Reduces interlace artifacts. --invert Inverts the images colours. --greyscale Removes colour from the image. --swapchannels <c1c2> Swap channels c1 and c2. --no-banner Hides the banner. --top-banner Puts the banner at the top. --bottom-banner Puts the banner at the bottom. (Default) --banner-colour <colour> Sets the banner colour. (#AARRGGBB) --line-colour <colour> Sets the banner line colour. --text-colour <colour> Sets the text colour. --font <[name][:size]> Sets the font and/or size. --no-shadow Disables the text shadow. --shadow Enables the text shadow. --title <text> Sets the main title. (top left) --no-title Clears the main title. --subtitle <text> Sets the sub-title. (bottom left) --no-subtitle Clears the sub-title. --timestamp <format> Sets the timestamp format. (top right) --no-timestamp Clears the timestamp. --gmt Use GMT instead of local timezone. --info <text> Sets the info text. (bottom right) --no-info Clears the info text. --underlay <PNG image> Sets the underlay image. --no-underlay Clears the underlay. --overlay <PNG image> Sets the overlay image. --no-overlay Clears the overlay. --jpeg <factor> Outputs a JPEG image. (-1, 0 - 95) --png <factor> Outputs a PNG image. (-1, 0 - 10) --save <filename> Save image to file. --exec <command> Execute a command and wait for it to complete.
C200用パラメータ
カメラによって性能が違う。パラメータも大きく変わる。
$ fswebcam --no-banner -F 50 -r 640x480 image.jpg
引数 | 意味 |
---|---|
--no-banner |
バナー非表示 |
-F 50 |
明るさ(フレーム数 1〜255。露光時間の増加) |
-r 640x480 |
サイズ |
ファイル名を撮影時間yyyyMMddHHmmss.jpg
にする。
$ fswebcam /tmp/`date "+%Y%m%d%H%M%S"`.jpg
$ mkdir -p /tmp/work/img/ $ fswebcam --no-banner -F 50 -r 640x480 /tmp/work/img/`date "+%Y%m%d%H%M%S"`.jpg
PNG形式で撮影。
$ fswebcam --no-banner -F 50 -r 640x480 --png 0 image.png
カメラ固有ステータス確認
$ fswebcam --list-controls
明るさと撮影時間
-F
引数値で明るくせねば真っ暗な画像になる。かわりに撮影までの時間が長くなる。
-F |
撮影までの時間 | 画像 |
---|---|---|
0 | 0s | 真っ暗 |
25 | 0.86s | 暗すぎ |
50 | 3.73s | なんとか見える |
75 | 7.03s | 普通の明るさ |
100 | 10.39s | やや明るい |
200 | 23.72s | 結構明るい |
255 | 31.02s | 最大値 |
-F | 秒 |
---|---|
0 | 0 |
7 | 0.26 |
15 | 0.56 |
23 | 0.83 |
31 | 1.16 |
47 | 3.33 |
63 | 5.43 |
95 | 9.73 |
127 | 13.96 |
159 | 18.26 |
191 | 22.49 |
223 | 26.79 |
255 | 31.06 |
ファイルサイズは約120KB。撮影した画像そのまま。無圧縮でこの残念な画質。
-F | 秒 | 画像 |
---|---|---|
0 | 0 | |
7 | 0.26 | |
15 | 0.56 | |
23 | 0.83 | |
31 | 1.16 | |
47 | 3.33 | |
63 | 5.43 | |
95 | 9.73 | |
127 | 13.96 | |
159 | 18.26 | |
191 | 22.49 | |
223 | 26.79 | |
255 | 31.06 |
サイズ確認
WebCam C200で撮影できるサイズを確認する。
- 160x120
- 176x144
- 320x240
- 352x288
- 640x360
- 640x400
- 640x480
$ lsusb -v |grep -1 Width Couldn't open device, some information will be missing Couldn't open device, some information will be missing Couldn't open device, some information will be missing Still image unsupported wWidth 640 wHeight 480 -- Still image unsupported wWidth 160 wHeight 120 -- Still image unsupported wWidth 176 wHeight 144 -- Still image unsupported wWidth 320 wHeight 240 -- Still image unsupported wWidth 352 wHeight 288 -- Still image unsupported wWidth 640 wHeight 360 -- Still image unsupported wWidth 640 wHeight 400 -- bNumImageSizePatterns 7 wWidth( 0) 640 wHeight( 0) 480 wWidth( 1) 160 wHeight( 1) 120 wWidth( 2) 176 wHeight( 2) 144 wWidth( 3) 320 wHeight( 3) 240 wWidth( 4) 352 wHeight( 4) 288 wWidth( 5) 640 wHeight( 5) 360 wWidth( 6) 640 wHeight( 6) 400 -- Still image unsupported wWidth 640 wHeight 480 -- Still image unsupported wWidth 160 wHeight 120 -- Still image unsupported wWidth 176 wHeight 144 -- Still image unsupported wWidth 320 wHeight 240 -- Still image unsupported wWidth 352 wHeight 288 -- Still image unsupported wWidth 640 wHeight 360 -- Still image unsupported wWidth 640 wHeight 400 -- bNumImageSizePatterns 7 wWidth( 0) 640 wHeight( 0) 480 wWidth( 1) 160 wHeight( 1) 120 wWidth( 2) 176 wHeight( 2) 144 wWidth( 3) 320 wHeight( 3) 240 wWidth( 4) 352 wHeight( 4) 288 wWidth( 5) 640 wHeight( 5) 360 wWidth( 6) 640 wHeight( 6) 400 Couldn't open device, some information will be missing Couldn't open device, some information will be missing Couldn't open device, some information will be missing Couldn't open device, some information will be missing Couldn't open device, some information will be missing
ビジー状態で撮影できない
fswebcam
で1回撮影すると、その後15秒間ほどビジー状態になり撮影できない。
$ fswebcam --no-banner -F 200 -r 640x480 image.jpg --- Opening /dev/video0... Trying source module v4l2... Error opening device: /dev/video0 open: Device or resource busy Trying source module v4l1... Error opening device: /dev/video0 open: Device or resource busy Unable to find a source module that can read /dev/video0.