从终端拍照

Lui*_*ado 67 command-line webcam

我希望能够使用终端的网络摄像头拍照。这个图像然后将被保存到一个文件中。如何才能做到这一点?

rɑː*_*dʒɑ 54

还有另一个应用程序可用于从名为Fswebcam的网络摄像头捕获图像 。你可以安装它

sudo apt-get install fswebcam
Run Code Online (Sandbox Code Playgroud)

您可以使用以下命令进行示例拍摄。

fswebcam -r 640x480 --jpeg 85 -D 1 web-cam-shot.jpg
Run Code Online (Sandbox Code Playgroud)

在上面的代码语法中,-r代表图像分辨率,代表图像--jpeg的格式类型85及其质量标准,-D代表捕获前设置的延迟。

现在您的图像最终以 web-cam-shot.jpg 名称保存。

希望有帮助。

  • 就我的测试机而言,我必须跳帧才能获得正确的图片。如果我拍第一张照片,照片会很暗,因为相机还没有准备好。`fswebcam -r 640x480 --jpeg 100 -D 3 -S 13 fswebcam.jpg` (11认同)
  • `--no-banner `(删除带有时间戳的底部横幅) (2认同)

Oli*_*Oli 38

如果你正在寻找自动化的东西webcam是相当不错的。它有很多可爱的选项可以通过互联网推送照片。

如果您想要更手动的东西,并且我们谈论的是 V4L/UVC(大多数)支持的相机,您可以使用streamer它从设备捕获帧:

streamer -f jpeg -o image.jpeg
Run Code Online (Sandbox Code Playgroud)


Ale*_*idt 31

使用avconvffmpeg,您也可以从您的设备捕获帧。例如:

avconv -f video4linux2 -s 640x480 -i /dev/video0 -ss 0:0:2 -frames 1 /tmp/out.jpg
Run Code Online (Sandbox Code Playgroud)

或者

ffmpeg -f video4linux2 -s 640x480 -i /dev/video0 -ss 0:0:2 -frames 1 /tmp/out.jpg
Run Code Online (Sandbox Code Playgroud)

这将/dev/video0作为video4linux2兼容设备打开,将分辨率设置为640x480,流式传输 2 秒(00:00:02或简单地2),然后捕获one单帧,将其保存为/tmp/out.jpg.

检查您的设备是否是/dev/video0,因为它对您来说可能有所不同。

可用的分辨率取决于您的网络摄像头。我的分辨率高达 640x480,我使用名为 的工具进行了检查,该工具qv4l2用于配置 video4linux2 设备。

-ss参数用于允许设备正确启动。在我的测试中,在打开相机时会出现淡入效果,因此,如果我省略-ss 2,则捕获的帧将非常暗。

  • 我更喜欢这个解决方案,因为我已经安装了 avconv。此外,avconv 的输出还给出了最大分辨率的提示,如 v4l 驱动程序所示,它是否必须回退到较低的规格。 (2认同)