- 使用普通电脑的内置或外接摄像头:通过命令行工具直接拍照。
- 使用专业单反或微单相机:通过
gphoto2软件进行远程控制。
下面我将详细介绍这两种情况的命令和操作方法。

使用普通摄像头(适用于笔记本内置摄像头或USB摄像头)
这是最常见的情况,主要依赖于 ffmpeg 或 fswebcam 这两个工具。
准备工作:检查摄像头
在拍照前,先确认你的系统能否识别到摄像头。
-
使用
lsusb命令(适用于USB摄像头):lsusb
在输出结果中,寻找类似
Integrated Camera、USB Camera或Logitech等字样。
(图片来源网络,侵删) -
使用
v4l2-ctl命令(更通用): 安装v4l-utils包(如果还没安装):# 对于 Debian/Ubuntu 系统 sudo apt update sudo apt install v4l-utils # 对于 Fedora/CentOS/RHEL 系统 sudo dnf install v4l-utils
然后运行以下命令列出所有视频设备:
v4l2-ctl --list-devices
你会看到类似下面的输出,
/dev/video0就是你的摄像头设备文件。Integrated_Webcam_HD: Integrated C RGB (usb-0000:00:14.0-2): /dev/video0 /dev/media0 USB_Camera: USB Camera (usb-0000:00:14.0-3): /dev/video2 /dev/media1
工具1:使用 ffmpeg (功能强大,推荐)
ffmpeg 是一个多媒体处理工具,功能极其丰富,不仅能拍照,还能录像、推流等。

安装 ffmpeg
# Debian/Ubuntu sudo apt install ffmpeg # Fedora/CentOS/RHEL sudo dnf install ffmpeg
基本拍照命令
# 从 /dev/video0 设备拍照,保存为 output.jpg ffmpeg -f video4linux2 -i /dev/video0 -frames:v 1 output.jpg
命令解释:
-f video4linux2: 指定输入格式为 V4L2,这是 Linux 下视频设备的标准接口。-i /dev/video0: 指定输入设备为/dev/video0(根据你上一步的检查结果修改)。-frames:v 1: 只捕获 1 帧(也就是一张照片)。output.jpg: 输出的图片文件名。
常用进阶选项
-
指定分辨率:
# 拍摄 1920x1080 分辨率的照片 ffmpeg -f video4linux2 -i /dev/video0 -frames:v 1 -video_size 1920x1080 photo_1080p.jpg
-
指定质量(仅适用于 JPEG):
# 拍摄高质量(质量因子 2,数值越小质量越高)的照片 ffmpeg -f video4linux2 -i /dev/video0 -frames:v 1 -q:v 2 high_quality_photo.jpg
-
直接从预览窗口拍照: 如果你的摄像头有一个预览窗口(比如通过
cheese或guvcview打开),你可以使用xwininfo和import命令来截取窗口画面。# 1. 先运行 xwininfo,鼠标点击预览窗口,获取窗口ID xwininfo # 2. 获取到窗口ID后(0x1a00001),使用 import 命令截图 import -window 0x1a00001 screenshot_from_preview.png
工具2:使用 fswebcam (简单易用)
fswebcam 是一个专门为网络摄像头设计的简单命令行工具。
安装 fswebcam
# Debian/Ubuntu sudo apt install fswebcam # Fedora/CentOS/RHEL sudo dnf install fswebcam
基本拍照命令
# 拍照并保存为 /home/user/my_photo.jpg fswebcam /home/user/my_photo.jpg
常用进阶选项
-
:
fswebcam --title "My Linux Desk" --save desk.jpg
-
指定分辨率:
fswebcam --resolution 1280x720 --save webcam_720p.jpg
-
每隔几秒拍一张照(循环拍摄):
# 每10秒拍一张,保存为 time-lapse_%Y-%m-%d_%H-%M-%S.jpg (文件名会包含时间) fswebcam --loop 10 --save /path/to/time-lapse_%Y-%m-%d_%H-%M-%S.jpg
按
Ctrl+C停止。
使用专业相机(通过 gphoto2)
gphoto2 是一个强大的命令行工具,可以控制数百种支持 PTP (Picture Transfer Protocol) 的数码相机,实现拍照、下载、录像等功能。
安装 gphoto2
# Debian/Ubuntu sudo apt install gphoto2 # Fedora/CentOS/RHEL sudo dnf install gphoto2
连接相机并检查
- 用 USB 线将相机连接到电脑。
- 打开相机电源(通常需要设置为“PC连接”或“PTP”模式)。
- 运行以下命令检测相机:
gphoto2 --auto-detect
如果成功,你会看到类似下面的输出,确认相机已被识别:
Detecting cameras ... Found 1 camera: Canon EOS 5D Mark IV (usb:001,002)
基本拍照命令
# 拍摄一张照片,并下载到当前目录,文件名自动生成 gphoto2 --capture-image
常用进阶选项
-
拍摄并指定文件名:
gphoto2 --capture-image --filename "my_canon_photo.jpg"
-
查看相机中所有文件:
gphoto2 --list-files
-
下载相机中的所有照片:
gphoto2 --get-all-files
-
拍摄并立即下载:
gphoto2 --capture-and-download --filename "captured_%Y%m%d_%H%M%S.jpg"
-
开启/关闭相机显示屏:
# 关闭显示屏以节省电量 gphoto2 --set-config "viewfinder=0" # 开启显示屏 gphoto2 --set-config "viewfinder=1"
总结与推荐
| 场景 | 推荐工具 | 优点 | 缺点 |
|---|---|---|---|
| 普通USB/笔记本摄像头 | ffmpeg |
功能最强大,支持录像、推流、调整分辨率和质量等 | 命令稍复杂 |
fswebcam |
命令简单直观,专为摄像头设计 | 功能相对单一 | |
| 专业单反/微单相机 | gphoto2 |
行业标准,功能全面,可远程控制相机 | 需要特定相机支持,安装可能稍复杂 |
快速开始建议:
- 如果你只是想用电脑摄像头快速拍张照,用
fswebcam最简单。 - 如果你需要更多控制(比如分辨率、质量),或者想实现更复杂的自动化,
ffmpeg是更好的选择。 - 如果你用的是单反或微单,
gphoto2是不二之选。
