树莓派上用 fswebcam + USB 摄像头拍摄

在实践过程中,树莓派对 USB 摄像头的支持不如 CSI 摄像头完美。偶尔会出现无法使用 USB 摄像头的情况,自带的摄像头操作命令 raspistill、raspivid 也无法使用。

而 fswebcam 这是一款小型摄像头程序(官网),则可以很好地支持 USB 摄像头。使用方法也很简便。

安装 fswebcam

安装 fswebcam,用于访问摄像头、进行拍照。

sudo apt-get install fswebcam

fswebcam 的用法

fswebcam –help Usage: fswebcam [] [[] … ] Options: -?, –help Display this help page and exit. -c, –config 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 Run in loop mode. -b, –background Run in the background. -o, –output Output the log to a file. -d, –device Sets the source to use. -i, –input Selects the input to use. -t, –tuner Selects the tuner to use. -f, –frequency Selects the frequency use. -p, –palette Selects the palette format to use. -D, –delay Sets the pre-capture delay time. (seconds) -r, –resolution Sets the capture resolution. –fps Sets the capture frame rate. -F, –frames Sets the number of frames to capture. -S, –skip Sets the number of frames to skip. –dumpframe Dump a raw frame to file. -s, –set = Sets a control value. –revert Restores original captured image. –flip Flips the image. (h, v) –crop [,] Crop a part of the image. –scale Scales the image. –rotate Rotates the image in right angles. –deinterlace Reduces interlace artifacts. –invert Inverts the images colours. –greyscale Removes colour from the image. –swapchannels 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 Sets the banner colour. (#AARRGGBB) –line-colour Sets the banner line colour. –text-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 Sets the main title. (top left) –no-title Clears the main title. –subtitle Sets the sub-title. (bottom left) –no-subtitle Clears the sub-title. –timestamp Sets the timestamp format. (top right) –no-timestamp Clears the timestamp. –gmt Use GMT instead of local timezone. –info Sets the info text. (bottom right) –no-info Clears the info text. –underlay Sets the underlay image. –no-underlay Clears the underlay. –overlay Sets the overlay image. –no-overlay Clears the overlay. –jpeg Outputs a JPEG image. (-1, 0 – 95) –png Outputs a PNG image. (-1, 0 – 10) –save Save image to file. –exec Execute a command and wait for it to complete.

使用 fswebcam

命令行下查看 /dev/下有video0 的设备。

运行 lsusb 命令,有相关摄像头的信息。

在终端中运行下面的命令来抓去一张来自摄像头的照片。

fswebcam –no-banner -r 640×480 image.jpg

或者你可以直接用:

fswebcam image.jpg

可以直接拍照,-d 用于指定使用哪个摄像头设备。-r 指定图片的分辨率,最后的是照片保存的路径。

如果拍摄出来的照片是一片漆黑,可能和摄像头启动延迟有关,可以通过加 -S 参数来跳过前面几帧解决。例如使用命令:

fswebcam -S 10 image.jpg