Skip to content

使用标准 USB 网络摄像头

您可以使用标准的 USB 网络摄像头在树莓派上拍照和录像,而不必使用树莓派 相机模块

请注意,摄像头模块的质量和可配置性远远优于标准 USB 网络摄像头。

安装 fswebcam

首先,安装fswebcam软件包:

`` sudo apt 安装 fswebcam


## 将您的用户添加到"视频"组

如果您未使用默认的" pi"用户帐户,则需要将用户名添加到" video"组中,否则将看到"权限被拒绝"错误。

``
sudo usermod -a -G video <用户名>

要检查用户是否已正确添加到组中,请使用" groups"命令。

基本用法

输入命令" fswebcam",后跟文件名,然后将使用网络摄像头拍照,并保存到指定的文件名:

`` fswebcam image.jpg


此命令将显示以下信息:

---打开/dev/video0 ... 正在尝试源模块 v4l2 ... /dev/video0已打开。 没有指定输入,使用第一个。 将分辨率从 384x288 调整为 352x288 。 ---抓架... 损坏的 JPEG 数据:标记 0xd4 之前的 2 个无关字节 在 0 .00秒内捕获的帧。 ---处理捕获的图像... 将 JPEG 图像写入" image.jpg"。


![基本图像捕获](images/image.jpg)

请注意使用较小的默认分辨率,并存在显示时间戳的横幅。

### 指定分辨率

本示例中使用的网络摄像头的分辨率为 1280  x 720,因此要指定要使用的图像分辨率,请使用-r标志:

``
fswebcam -r 1280x720 image2.jpg

此命令将显示以下信息:

---打开/dev/video0 ...
正在尝试源模块 v4l2  ...
/dev/video0已打开。
没有指定输入,使用第一个。
---抓架...
损坏的 JPEG 数据:标记 0xd5 之前的 1 个无关字节
在 0 .00秒内捕获的帧。
---处理捕获的图像...
将 JPEG 图像写入" image2.jpg"。

全分辨率图像

现在以网络摄像头的完整分辨率拍摄照片,并带有横幅。

不指定横幅

现在添加--no-banner标志:

`` fswebcam -r 1280x720-无横幅 image3 .jpg


其中显示以下信息:

---打开/dev/video0 ... 正在尝试源模块 v4l2 ... /dev/video0已打开。 没有指定输入,使用第一个。 ---抓架... 损坏的 JPEG 数据:标记 0xd6 之前的 2 个无关字节 在 0 .00秒内捕获的帧。 ---处理捕获的图像... 禁用横幅。 将 JPEG 图像写入" image3.jpg"。


![无横幅的全分辨率图像](images/image3.jpg)

现在,以全分辨率拍摄照片,没有横幅。

## 坏图片

通过 USB 网络摄像头,您可能会遇到质量较差的图片,例如以下偶然的艺术作品:

![不良的网络摄像头图片](images/jack.jpg)

某些网络摄像头比其他网络摄像头更可靠,但是质量较差的网络摄像头可能会出现这种问题。如果问题仍然存在,请确保您的系统为[最新](../../raspbian/updating.md)。也可以尝试使用其他网络摄像头,但是树莓派 [摄像头模块](https://www.raspberrypi.org/help/camera-module-setup/)可以提供最佳性能。

## Bash脚本

您可以编写一个 Bash 脚本,用网络摄像头拍照。下面的脚本将图像保存在`/home/pi/webcam`目录中,因此首先使用以下命令创建`webcam`子目录:

``
mkdir网络摄像头

要创建脚本,请打开您选择的编辑器并编写以下示例代码:

``

!/bin/bash

DATE = $(日期+"%Y-%m-%d_%H%M")

fswebcam -r 1280x720-无横幅/home/pi/webcam/$DATE.jpg


该脚本将拍照并使用时间戳命名文件。假设我们将其保存为" webcam.sh",我们首先将文件设为可执行文件:

``
chmod + x webcam.sh

然后运行:

`` ./webcam.sh


它将运行文件中的命令并给出通常的输出:

---打开/dev/video0 ... 正在尝试源模块 v4l2 ... /dev/video0已打开。 没有指定输入,使用第一个。 ---抓架... 损坏的 JPEG 数据:标记 0xd6 之前的 2 个无关字节 在 0 .00秒内捕获的帧。 ---处理捕获的图像... 禁用横幅。 将 JPEG 图像写入" /home/pi/webcam/2013-06-07_2338.jpg"。


## 使用 cron 的延时

您可以使用`cron`安排以给定的时间间隔拍摄照片,例如每分钟拍摄一次延时拍摄。

首先打开 cron 表进行编辑:

crontab -e


这将询问您要使用哪个编辑器,或在默认编辑器中打开。在编辑器中打开文件后,添加以下行以安排每分钟拍照(请参考上方的 Bash 脚本):

``
* * * * * /home/pi/webcam.sh 2>&1

保存并退出,您应该看到以下消息:

`` crontab:安装新的 crontab ```确保脚本不会保存使用相同文件名拍摄的每张照片。每次都会覆盖图片。

其他有用的工具

使用其他工具可能会在使用相机或网络摄像头时派上用场:

  • SSH
    • 使用 SSH 通过本地网络远程访问树莓派
  • SCP
    • 通过 SSH 复制文件以获取在主计算机上的 Pi 上拍摄的照片的副本
  • rsync
    • 使用rsync同步在 Pi 和计算机之间的文件夹中拍摄的图片的文件夹
  • cron
    • 使用cron安排以给定的时间间隔拍照,例如每分钟拍摄一次延时