跳到主要内容

摄像头

关于摄像头模块

树莓派目前有多个官方摄像头模块。最初的 500 万像素型号发布于 2013 年,随后是 2016 年发布的 800 万像素摄像头模块2。最新的摄像头型号是 2023 年发布的 1200 万像素摄像头模块3。树莓派已不再提供最初的 500 万像素设备。

所有这些摄像头都有可见光和红外版本,而摄像头模块3也有标准和广视角两种型号,共有四种不同的变体。

摄像头模块3普通和广角

摄像头模块 3(左)和摄像头模块 3 广角(右)

摄像头模块 3 NoIR 普通型和广角型

摄像头模块 3 NoIR 普通型和广角型

此外,还分别于 2020年2023年 推出了 1200 万像素的高像素摄像头,配有 CS 或 M12 卡口,可与外置镜头配合使用。HQ 摄像头没有红外版本,但可根据需要拆除红外滤镜

M12 和 C/CS 安装型 HQ 摄像头

HQ 摄像头,M12 安装(左)和 C/CS 安装(右)

Raspberry Pi AI 相机使用索尼 IMX500 成像传感器,可为任何相机应用提供低延迟和高性能的 AI 功能。与 Raspberry Pi 的相机软件栈 的紧密集成使用户能够以最小的工作量部署自己的神经网络模型。

Raspberry Pi AI 摄像头

Raspberry Pi AI 摄像头

最后是 2023年 发布的全局快门摄像头。GS 摄像头没有红外版本,但可根据需要拆除红外滤镜

GS 摄像头

全局快门摄像头

注意

Raspberry Pi 相机模块兼容所有带有 CSI 接口的 Raspberry Pi 计算机。

滚动快门还是全局快门?

大多数数码摄像头 (包括我们的摄像头模块) 都使用滚动快门:它们逐行扫描正在捕捉的图像,然后输出结果。您可能已经注意到,这在某些情况下会造成失真效果;如果您曾经拍摄过旋转的螺旋桨叶片,您可能会发现图像在闪烁,而不像是一个正在旋转的物体。螺旋桨叶片有足够的时间在摄像头扫过和观察场景的瞬间改变位置。

全局快门--就像我们的全局快门摄像头模块,它不会这样做。它能一次性捕捉到场景中每个像素的光线,因此您拍摄的螺旋桨叶片不会出现同样的失真。

这有什么用呢?快速移动的物体,比如螺旋桨叶片,现在很容易捕捉;我们还可以同步多台摄像头,在精确的同一时刻拍摄照片。这样做有很多好处,比如在捕捉立体图像时可以最大限度地减少失真。(如果左眼出现的任何动作尚未在右眼出现,人脑就会感到困惑)。树莓派全局快门摄像头的曝光时间也比滚动快门摄像头短,在光线充足的情况下,曝光时间最短可达 30µs,这使它在高速摄影时非常有用。

注意

全局快门摄像头的图像传感器具有 6.3 毫米对角线有效感应区域,与树莓派的 HQ 摄像头大小相似。不过,像素更大,可以收集更多光线。大像素尺寸和低像素数量在机器视觉应用中很有价值;传感器产生的像素越多,实时处理图像的难度就越大。为了解决这个问题,许多应用都会缩小和裁剪图像。使用全局快门摄像头和适当的镜头倍率就不需要这样做了,较低的分辨率和较大的像素尺寸意味着可以原生捕捉图像。

安装树莓派摄像头

警告

摄像头对静电很敏感。在处理 PCB 之前,请先接地。如果没有接地带,水槽水龙头或类似装置就足够了。

连接摄像头

在连接任何摄像头之前,先关闭 Raspberry Pi 并断开电源。

将柔性电缆插入 Raspberry Pi 上标有 CAMERA 的连接器,该连接器位于以太网和 HDMI 端口之间。插入电缆时,银色触点必须朝向 HDMI 端口。要打开连接器,将连接器顶部的卡扣向上拉,然后拉向以太网端口。应将柔性电缆牢固地插入连接器,注意不要将柔性电缆弯曲得太厉害。要关闭连接器,请将连接器顶部向下推,远离以太网端口,同时将柔性电缆固定到位。

下面的视频展示了如何在 Raspberry Pi 1 上连接原装摄像头:

无法嵌入YOUTUBE视频

虽然 Raspberry Pi 5 和所有 Raspberry Pi Zero 型号都需要使用 不同的摄像头连接线,但所有带摄像头连接器的 Raspberry Pi 板都使用相同的安装方法。

有些摄像头的镜头上可能会覆盖一小块半透明的蓝色塑料薄膜。这只是为了在运输过程中保护镜头。要撕下它,请轻轻剥离。

未能嵌入YOUTUBE视频

根据型号的不同,摄像头的镜头上可能会覆盖一小块半透明的蓝色塑料薄膜。这只是为了在邮寄给您的过程中保护镜头,需要轻轻撕掉。

注意

请参阅有关将推荐的 6毫米16毫米 镜头安装到 HQ 摄像头上的其他文档,。

准备软件

在继续之前,我们建议确保您的内核、GPU 固件和应用程序都是最新的。请按照说明保持操作系统为最新版本

然后,请按照 libcamera 软件栈和 Picamera2 Python 库 的相关设置说明进行设置。

硬件规格

摄像头模块v1摄像头模块v2摄像头模块3摄像头模块3广角型高清摄像头AI摄像头GS摄像头
净价$25$25$25$35$50$70$50
尺寸约 25 × 24 × 9 毫米约 25 × 24 × 24 × 9 毫米约 25 × 24 × 24 × 11.5 毫米约 25 × 24 × 24 × 12.4 毫米38 x 38 x 18.4 毫米(不包括镜头)25 x 24 x 11.9 毫米38 x 38 x 19.8 毫米(带适配器和防尘盖时为 29.5 毫米)
重量3g3g4g4g30.4g6g34g (带适配器和防尘盖时为 41g)
静态分辨率500 万像素800 万像素1,190 万像素1,190 万像素1,230 万像素1230 万像素158 万像素
视频模式1080p30、720p60 和 640 × 480p60/901080p47、1640 × 1232p41 和 640 × 480p2062304 × 1296p56、2304 × 1296p30 HDR、1536 × 864p1202304 × 1296p56,2304 × 1296p30 HDR,1536 × 864p1202028 × 1080p50、2028 × 1520p40 和 1332 × 990p1202280 x 1088p30、4056 x 3040p101456 x 1088p60
传感器OmniVision OV5647索尼 IMX219索尼 IMX708索尼 IMX708索尼 IMX477索尼 IMX500索尼 IMX296
传感器分辨率2592 × 1944 像素3280 × 2464 像素4608 x 2592 像素4608 x 2592 像素4056 x 3040 像素4056 x 3040 像素1456 x 1088 像素
传感器图像区域3.76 × 2.74 毫米3.68 x 2.76 毫米(对角线 4.6 毫米)6.45 x 3.63 毫米(对角线 7.4 毫米)6.45 x 3.63 毫米(对角线 7.4 毫米)6.287 毫米 x 4.712 毫米(对角线长 7.9 毫米)6.287 毫米 x 4.712 毫米(对角线长 7.9 毫米)6.3 毫米对角线
像素尺寸1.4 微米 × 1.4 微米1.12 微米 x 1.12 微米1.4 微米 x 1.4 微米1.4 微米 x 1.4 微米1.55 微米 x 1.55 微米1.55 微米 x 1.55 微米3.45 微米 x 3.45 微米
光学尺寸1/4"1/4"1/2.43"1/2.43"1/2.3"1/2.3"1/2.9"
聚焦固定式可调电动电动可调可调可调
景深约 1 米至∞约 10 厘米至 ∞约 10 厘米至 ∞约 5 厘米至 ∞不适用约 20 厘米至 ∞不适用
焦距3.60 毫米 ± 0.013.04 毫米4.74 毫米2.75 毫米取决于镜头4.74 毫米取决于镜头
水平视场角 (FoV)53.50 ± 0.13 度62.2 度66 度102 度取决于镜头66 ±3 度取决于镜头
垂直视场角 (FoV)41.41 ± 0.11 度48.8 度41 度67 度取决于镜头52.3 ±3 度取决于镜头
焦距比 (F档)F2.9F2.0F1.8F2.2取决于镜头F1.79取决于镜头
最长曝光时间(秒)3.2811.76112112670.7411215.5
镜头安装不适用不适用不适用不适用C/CS 或 M12 安装不适用C/CS
是否提供 NoIR 版本?
注意

有证据表明,摄像头模块3可能会以 CSI 时钟频率的谐波发射射频干扰。这种射频干扰的范围会干扰 GPS L1 频率(1575 MHz)。请参阅 Github 上的主题,了解详细信息和建议的解决方法。

机械图纸

可用的机械图纸;

  • 摄像头模块 2 PDF
  • 摄像头模块 3 PDF
  • 宽幅摄像头模块 3 PDF
  • 摄像头模块 3 STEP
  • HQ 摄像头模块(CS 安装版)PDF
    • CS 卡口 PDF
  • HQ 摄像头模块(M12 安装版)PDF
  • GS 摄像头模块 PDF
注意

摄像头模块3的电路板尺寸和安装孔位置与摄像头模块2相同。但是,由于传感器模块的尺寸和位置发生了变化,它与树莓派Zero外壳的摄像头盖在机械上不兼容。

示意图

树莓派 CSI 摄像头连接器示意图。

摄像头连接器

其他可用示意图;

  • 摄像头模块 v2 PDF
  • 摄像头模块 v3 PDF
  • HQ 摄像头模块 PDF

摄像头滤镜

某些传输特性适用于摄像头模块3 以及 HQ 和 GS 摄像头。

注意

这些图表以 PDF 格式提供。

摄像头模块3

摄像头模块3 以 IMX708 为核心,其光谱灵敏度特性如下。

摄像头模块 3 传输图

HQ摄像头

不带红外滤镜的树莓派 HQ 摄像头。

不带红外截止滤镜的 HQ 摄像头传输图

GS摄像头

树莓派 GS 摄像头,不带红外截止滤镜。

不带红外截止滤镜的 GS 摄像头传输图

HQ和GS摄像头

HQ 和 GS 摄像头使用 Hoya CM500 红外滤镜。其传输特性如下图所示。

CM500 传输图

红外滤光片

高画质相机和全局快门相机都含有红外滤光镜,可降低相机对红外光的敏感度,使户外照片看起来更自然。不过,您也可以去掉滤光片:

  • 增强某些摄影类型的色彩,例如植物、水和天空的图像
  • 在有红外光照射的地方提供夜视效果

移除滤镜

注意

此过程不能颠倒:固定滤光片的粘合剂经不起抬起和更换,虽然红外滤光片厚约 1.1 毫米,但取出时可能会破裂。取下滤镜将导致产品保修失效

您可以从 HQ 和 GS 摄像机上取下滤镜。HQ 摄像机的演示如下。

小滤镜
提示

请确保在清洁无尘的环境中工作,因为传感器会暴露在空气中。

  1. 拧下主电路板底部的两个 1.5 毫米六角锁匙。小心不要让垫圈滚落。
拆下小螺钉
  1. 外壳和电路板之间有一个略带粘性的垫圈,需要用一些力才能将其分开。您可以尝试一些削弱粘合剂的方法,例如使用少量异丙醇和/或加热(~20-30 ℃)。
  2. 粘合剂松开后,提起电路板并将其放在非常干净的表面上。确保传感器不接触表面。
平放
  1. 镜头朝上,将卡口放在平坦的表面上。
溶剂
  1. 为了最大限度地降低滤镜破裂的风险,请使用笔头或类似的软塑料物品,仅在玻璃与铝材连接的最边缘向下按压滤镜。胶水会断裂,滤镜就会从镜头支架上脱落。
取下滤镜
  1. 鉴于更换镜头会暴露传感器,此时您可以粘贴一个透明滤镜(例如 OHP 塑料),以尽量减少灰尘进入传感器腔的机会。
  2. 更换电路板上的主外壳。确保将外壳与电路板上的垫圈重新对齐。
  3. 先戴上尼龙垫圈,以防损坏电路板。
  4. 然后装上钢垫圈,以防止损坏尼龙垫圈。拧下两个六角锁匙。只要垫圈安装顺序正确,就不需要拧得很紧。
关闭滤镜
注意

要将滤镜粘回原位并使设备恢复正常光学照摄像头功能可能会很困难,甚至不可能。

推荐镜头

建议将以下镜头与我们的 HQ 和 GS 摄像头配合使用。

注意

HQ 摄像头有 C/CS 卡口和 M12 卡口两种型号,而 GS 摄像头只有 C/CS 卡口。

C/CS 镜头

我们推荐使用两个镜头,一个 6 毫米广角镜头和一个 16 毫米长焦镜头。这些镜头可从最近的授权经销商处购买。

16 毫米长焦镜头6 毫米广角镜头
分辨率1000 万像素300 万像素
图像格式1"1/2"
光圈F1.4 至 F16F1.2
安装CCS
视场角 H°×V° (D°)HQ22.2°×16.7° (27.8°)55°×45° (71°)
GS17.8°×13.4° (22.3)45°×34° (56°)
背面焦距17.53 毫米7.53 毫米
外径0.2m0.2m
尺寸φ39.00×50.00毫米φ30×34毫米

M12镜头

M12 镜片

我们推荐三种由高佳光学制造的镜片。这些镜片可从离您最近的授权经销商处购买。

8 毫米25 毫米鱼眼
分辨率1200 万像素500 万像素1500 万像素
图像格式1/1.7"1/2"1/2.3"
光圈F1.8F2.4F2.5
安装M12
HQ 视场角 H°×V° (D°)49°×36° (62°)14.4°×10.9° (17.9)°140°×102.6° (184.6°)

同步捕捉

高品质(HQ)摄像头支持同步捕获。 一台摄像头(“源摄像头”)可配置为在启动帧捕获时在其XVS(垂直同步)引脚上生成一个脉冲。 其他(“目标”)摄像头可以监听此脉冲,并在源摄像头捕获帧的同时进行捕获。

此方法已被 软件摄像头同步所取代,该方法可在无需额外线缆的情况下实现长距离操作,并具备亚毫秒级精度。但当摄像头物理距离较近时,可使用有线同步。

注意

全局快门(GS)相机也可在同步模式下运行。然而,源相机将额外记录一帧。对于GS相机,我们建议使用 外部触发源。无法同步GS相机和HQ相机。

连接摄像头

将导线焊接到每个摄像头的XVS测试点,并将它们连接在一起。

将导线焊接到每个摄像头的GND测试点,并将它们连接在一起。

仅适用于GS摄像头,您还需要将每个摄像头的XHS(水平同步)测试点相互连接。对于任何希望作为接收端的GS摄像头,请用焊锡将MAS焊盘的两部分短接。

注意

本文件较早版本曾建议为XVS添加外部上拉电阻。此建议不再适用。请确保使用Raspberry Pi OS最新版本,并为所有连接的摄像头设置always-on属性。

驱动程序配置

您需要配置摄像头驱动程序,使其在不进行流媒体传输时保持1.8V电源供应,并可选地设置源和 sink 角色。

对于HQ摄像头

编辑 /boot/firmware/config.txt。将 camera_auto_detect=1 改为 camera_auto_detect=0

对于源摄像头,添加以下行:

dtoverlay=imx477,always-on,sync-source

或对于汇:

dtoverlay=imx477,always-on,sync-sink

在 Raspberry Pi 5、CM4 或 CM5 上使用 CAM0 端口时,在该行末尾添加 ,cam0(不带空格)。如果同一台 Raspberry Pi 上连接了两台摄像头,则需要两行 dtoverlay 配置,其中仅一行以 ,cam0 结尾。

或者,如果您希望在运行时交换摄像头的角色(且它们未连接到同一台 Raspberry Pi),请省略上述 ,sync-source,sync-sink。相反,您可以在启动每个摄像头前设置模块参数:

对于带有源摄像头的 Raspberry Pi:

echo 1 | sudo tee /sys/module/imx477/parameters/trigger_mode

对于带有目标摄像头的树莓派:

echo 2 | sudo tee /sys/module/imx477/parameters/trigger_mode

每次系统启动时都需要执行此操作。

对于 GS 相机

编辑 /boot/firmware/config.txt。将 camera_auto_detect=1 改为 camera_auto_detect=0

对于源或汇,添加以下行:

dtoverlay=imx296,always-on

在 Raspberry Pi 5、CM4 或 CM5 上使用 CAM0 端口时,在该行末尾添加 ,cam0,且不留空格。如果同一台 Raspberry Pi 上有两台摄像头,则需要两行 dtoverlay,其中仅一行以 ,cam0 结尾。

在 GS 相机上,接收端角色通过 MAS 引脚启用,无法通过软件配置(“trigger_mode” 和 “sync-sink” 与 外部触发方法 相关,且不应为此方法设置)。

Libcamera 配置

如果所有摄像头未能在 1 秒内启动,rpicam 应用程序可能会超时。为避免此情况,您必须在配备 sink 摄像头的任何 Raspberry Pi 设备上编辑配置文件。

在 Raspberry Pi 5 或 CM5 上:

cp /usr/share/libcamera/pipeline/rpi/pisp/example.yaml timeout.yaml

在其他 Raspberry Pi 型号上:

cp /usr/share/libcamera/pipeline/rpi/vc4/rpi_apps.yaml timeout.yaml

现在编辑副本。在两种情况下,删除 “camera_timeout_value_ms”: 行中的 #(注释),并将数字改为 60000(60 秒)。

启动摄像头

运行以下命令以启动汇:

export LIBCAMERA_RPI_CONFIG_FILE=timeout.yaml
rpicam-vid --frames 300 --qt-preview -o sink.h264

等待几秒钟,然后运行以下命令以启动源:

rpicam-vid --frames 300 --qt-preview -o source.h264

帧应保持同步。使用 --frames 确保捕获的帧数相同,且录制文件的长度完全一致。 先运行 汇 可确保不会丢失任何帧。

注意

在使用 GS 相机同步模式时,汇记录的帧数不会与源完全相同。源会在 sink 开始记录前多记录一帧。因此,您需要使用 --frames 选项指定 sink 少记录一帧。

GS摄像头上的外部触发器

全局快门(GS)摄像头可通过电路板上的外部触发器(在电路板上表示为 XTR)连接进行外部触发。同一脉冲可连接多台摄像头,这也是同步两台摄像头的另一种方法。

曝光时间等于低脉冲宽度时间加上 14.26us 的额外时间,即 10000us 的低脉冲导致 10014.26us 的曝光时间。帧频直接受控于对引脚的脉冲频率。PWM 频率为 30Hz 时,帧频为每秒 30 帧。

显示脉冲格式的图片

准备工作

警告

本修改包括拆除 SMD 焊接部件。除非您认为自己有能力完成此改装,否则不应尝试。焊接到摄像头电路板时,请取下塑料后盖,以免损坏电路板。

如果电路板上安装了晶体管 Q2(如下图中蓝色所示),则需要从电路板上拆下 R11(如下图中红色所示)。它将 GP1 连接到 XTR,如果不取下 R11,摄像头将无法在外部触发模式下工作。元件位置如下所示。

显示待拆除电阻的图片

接下来,将一根导线焊接到 GS 摄像头电路板上的 XTR 和 GND 连接点上。请注意,XTR 是 1.8V 输入电压,因此可能需要电平转换器或电位分配器。

我们可以使用树莓派Pico来提供触发器。通过 1.5kΩ 电阻器将任何 Pico GPIO 引脚(本例中使用 GP28)连接至 XTR。同时在 XTR 和 GND 之间连接一个 1.8kΩ 电阻器,以将高逻辑电平降至 1.8V。接线图如下所示。

显示树莓派Pico接线的图片

树莓派Pico Micropython代码

from machine import Pin, PWM

from time import sleep

pwm = PWM(Pin(28))

framerate = 30
shutter = 6000 # In microseconds

frame_length = 1000000 / framerate
pwm.freq(framerate)

pwm.duty_u16(int((1 - (shutter - 14) / frame_length) * 65535))

低脉冲宽度等于快门时间,PWM 频率等于帧频。

注意

在本示例中,引脚 28 用于连接 GS 摄像头板上的 XTR 触摸点。

相机驱动程序配置

此步骤仅在您使用多台通过XTR并联连接的相机时需要执行。

编辑 /boot/firmware/config.txt 文件。将 camera_auto_detect=1 修改为 camera_auto_detect=0

dtoverlay=imx296,always-on

若在 Raspberry Pi 5、CM4 或 CM5 上使用 CAM0 端口,需在该行末尾添加 ,cam0(不带空格)。若两台摄像头均连接至同一台 Raspberry Pi,则需添加两行 dtoverlay,其中仅一行以 ,cam0 结尾。

如果外部触发器不会立即启动,您还需要增加 libcamera 超时设置 如上所述。。

启动摄像头

启用外部触发:

echo 1 | sudo tee /sys/module/imx296/parameters/trigger_mode

在 Pico 上运行代码,然后启动摄像头:

rpicam-hello -t 0 --qt-preview --shutter 3000

每次 Pico 脉冲引脚时,它都应捕获一帧图像。然而,如果未设置 --gain--awbgains 参数,部分帧将被丢弃,以允许自动增益控制(AGC)和自动白平衡(AWB)算法稳定下来。

注意

在运行 rpicam-apps 时,请始终指定一个固定的快门持续时间,以确保 AGC 不会尝试调整相机的快门速度。该值并不重要,因为它实际上由外部触发脉冲控制。


中文翻译版以英文版相同知识授权方式共享:CC-BY-SA 4.0。交流 Q群:498908352