当许多人听说要在工业领域引入图像识别设备时,他们可能会想象一台大型机器和一大笔预算。
除了定制程序外,如果硬件是 PL-R4 等工业用 Raspi,还可以利用通用摄像头和各种传感器,以低廉的成本构建系统。
对于小规模应用来说,这似乎也不无道理。
我们测试的产品 PL-R4 ComputeModule4(”RPI CM4″)与业余爱好者使用的 Raspberry Pi 4(”Pi 4″)几乎完全相同。我们可以用常见的 USB 连接网络摄像头和摄像头模块进行测试,官方渠道也有提供。
我们连接了一个摄像头,以查看不同之处,包括工业 Raspi 的独特设置。
可连接的摄像机

与普通 Raspi 一样,工业 Raspi 可以安装各种摄像头,拍摄静态和动态图像。
连接到电路板 CSI 端口的摄像头作为摄像头模块出售。
也可以使用 USB 连接的普通网络摄像头。
我可以根据自己所需的质量从多种产品中进行选择。
- CSI
- USB
相机模块可从 Raspberry Pi 基金会正式购买。
其中,HQ 摄像机还可与长焦镜头和广角镜头一起使用,对于可连接到 Raspberry Pi 的摄像机来说,图像质量非常高(1290 万像素)。
(1290 万像素),在工业应用中可能具有特殊价值。


本研究中测试的摄像头从左到右依次为高质量 HQ 摄像头(官方提供,三脚架需单独购买)、摄像头模块 V3(官方提供,外壳需单独购买)和罗技 C270n 网络摄像头。
この他にも多種多様なカメラが接続できます。(赤外線カメラ、熱感知用途、屋外用途など)
使用環境に適したカメラが選べると思います。
易于插入的网络摄像头
自从 Corona 灾难发生后,许多人都有机会使用连接 USB 的网络摄像头。 就像 Windows 和 Mac 一样,连接 USB 的摄像头无需修改即可在 Raspberry Pi 上使用。这一点与标准 PC 相似。
工业用 Raspi 也是如此。
只需连接 USB,PL-R4 还可以在桌面(图形用户界面)和命令(CUI)环境中操作。
您只需选择软件,就能在 Raspberry Pi 操作系统上使用摄像头。
Guvcview.
推荐使用的图形用户界面环境是 Guvcview。
它分为两个窗口,一个用于控制,一个用于显示。
无论是静态图像还是动态图像,使用该按钮都毫不费力。

只需安装 Guvcview 即可识别网络摄像头。
什么都没有设置。
sudo apt install guvcview
与 Pi 4 一样,如果您想使用 USB 连接的摄像头,在 RPI CM4 Raspi 上使用 Guvcview 也很容易。
与 Raspberry Pi 一起使用的 USB 连接网络摄像头更有可能与不太现代化的产品一起使用。
我们测试的 C270n 是 2019 年发布的型号,如果能有一个就更好了。
连接摄像头模块
如果是正式的 Raspberry Pi 摄像头模块,只需插入 CSI 线缆即可识别,就像 USB 连接的网络摄像头一样。
这也适用于 libcamera 命令,无需任何特殊配置。
不过,第三方摄像头模块不会自动识别,因此配置文件需要稍加改写。
除了重写配置文件外,本次试验中使用的 PiLink 公司的 PL-R4 还需要在硬件方面进行配置,才能使用 CSI 端口。
- 改变硬件开关
- 编辑 config.txt。
- 准备启动时加载的 dt-blob.bin 文件。

注意连接 CSI 端口的扁平电缆的方向。在照片中,背面是蓝色条带,正面是接线端。
所测试的产品为 USB 型(IP20),其面板上有一条缝隙,可将摄像机电缆拉出。

小心处理扁平电缆和末端的端子部分,以免断开。
硬件配置更改
工业 Raspi 的功能越多,需要切换的硬件设置就越多。
电路板上有几个开关,需要将这些拨码开关设置为正确的设置。
该区域不同于业余爱好区。
请注意,普通 Pi 4 和 Pi 5 的设置不同。
使用的 PL-R4 中对此有解释。

/boot/config.txt
除硬件更改外,还要对 .NET Framework 进行必要的修改。
例如,对于家庭使用的 Pi 4,如果使用官方摄像头模块,只需连接即可识别,无需做任何更改。config.txt
display_auto_detect=1
中的启用对官方摄像头模块有效。
第三方相机模块和工业用 Raspis(如本机)需要注释自动识别功能并指定相机类型。
/boot/config.txt
示例说明:
# Automatically load overlays for detected DSI displays
#display_auto_detect=1
[all]
dtoverlay=imx708
请注意,要指定的名称取决于摄像机模块。
按图像传感器命名:
| 官方相机模块 | 型号 | 名称 | | :——–: | :-: | :—-: | | | V1 | OV5647 | | V2 | IMX219 | | HQ | IMX477 | | GS | IMX296 | | | V3 | IMX708 | 这次我们使用了官方 V3 和官方 HQ 相机,因此分别指定了 IMX708 和 IMX477。所以分别指定了 IMX708 和 IMX477。
他にもサードパーティー製カメラモジュールもあり、IMX290、IMX327、IMX378、IMX519、OV9281と分けられています。
CSI接続カメラの製品詳細などで、イメージセンサー名として記載されています。指定する名称は説明書や購入先で確認してください。
除此以外,PL-R4 需要修改的不仅仅是型号的名称,最终的修改将涉及以下方面
sudo nano /boot/config.txt
# 自動認識をコメントアウト
# Automatically load overlays for detected cameras
#camera_auto_detect=1
#ディスプレイの自動認識をコメントアウト
# Automatically load overlays for detected DSI displays
#display_auto_detect=1
# ドライバの有効化
# Enable DRM VC4 V3D driver
dtoverlay=vc4-kms-v3d
max_framebuffers=2
#WD/CSIに関する記述をコメントアウト
#dtparam=i2c0_baudrate=400000
#dtoverlay=i2c0,pins_0_1
#WD/CSI select
#dtparam=i2c1_baudrate=400000
#dtoverlay=i2c1,pins_44_45
# Camera Module
dtoverlay=imx708
每条说明都是预先存在的。您几乎可以启用/禁用注释。
此外,如果型号设置了看门狗,请注释相关部分。
sudo nano /etc/rc.local
# ウォッチドッグコメントアウト
#WD
#python /home/pi/wdrst.py
config.txt
在 Pi 5 处理的 “书虫 “中,”…… “的位置首先是不同的。/boot/firmware/config.txt
/boot/config.txt
(bookworm: ) 本文是在 Pi 4 系统的牛眼环境下编写的,地址为 .
修改 dt-blob.bin
对于配有 RPI CM4 和 I/O 板的 PL-R4,需要进一步改装。
dt-blob.bin
您需要修改 GPU 使用的 ,尽管您可能对它并不熟悉。
简单解释一下,这是因为连接到 GPIO 的设备需要重新编号,以便将其分配给其他功能。
更多信息,请参阅官方文档。
(正式文件:https://www.raspberrypi.com/documentation/computers/compute-module.html#device-tree)
PL-R4 用户的修改程序。
minimal-cm-dt-blob.dts
请参阅前面的官方文件。
这可以通过编辑来定义。
从第 271 行开始编辑:
pin_define@ID_SDA {
type = "internal";
number = <44>;
};
pin_define@ID_SCL {
type = "internal";
number = <45>;
};
pin_define@CAMERA_0_I2C_PORT {
type = "internal";
number = <1>;
};
然后进行编译。编译器从一开始就已经安装好了。(我收到了一个警告,但没有问题)。
sudo dtc -I dts -O dtb -o minimal-cm-dt-blob.dtb minimal-cm-dt-blob.dts
dt-blob.bin
最后,用文件名将其复制并放入 /boot 目录,就大功告成了。重启后即可生效。
sudo cp minimal-cm-dt-blob.dtb /boot/dt-blob.bin
这方面的工作稍显困难。可以说,角色可以得到更好的改变。
如上所述,主要做了三处修改。
- 作为硬件的交换
- 修改 dt-blob.bin
- 修改 config.txt。
设置完成后,请尝试执行以下命令,以便在重启后进行检查。
按命令使用(连接 CSI 的摄像机模块)。
连接到 CSI 端口的相机模块可以使用 libcamera 命令和由 Python 处理的 Picamera2 模块。*这两个模块已预装在 bullseye 或更高版本中。
我们说的是操作系统版本的靶心;在 Pi 5 bookworm 中是 rpicam 命令。这有点复杂。
在处理早期 Raspi 型号和操作系统上的摄像头模块时要小心。
raspi-config
传统摄像机模式可从传统摄像机模式中设置,也可禁用。
解释起来有点夸张,这是处理 Pi 3 上的 raspistill 命令所需的选项。
可能存在以下关系。
- Pi3 系列(buster)raspistill 命令
- Pi4 系列(牛眼)libcamera 命令
- Pi5 系列(书虫)rpicam 命令。
Raspberry Pi 和摄像头模块的历史有点复杂。
Raspberry Pi OS Bookworm 已将相机捕捉应用程序从 libcamera-* 更名为 rpicam-*。在 Bookworm 之前的 Raspberry Pi OS 版本中将继续使用 libcamera-* 名称。
官方信息也基本上是在 Pi 5 和书虫环境下解释的,稍早的信息在靶心下有效。
互联网上有很多信息,但 2022 年前后的信息会很有用。
检查连接的命令
连接相机模块后,检查相机是否已被识别。
使用 libcamera 命令显示摄像机列表。config.txt
如果此处出现错误,请检查 CSI 连接电缆是否插错,或者您添加的部分是否有误,例如 .
libcamera-hello --list-cameras
如果它被识别,则应显示如下。
Available cameras
-----------------
0 : imx708 [4608x2592] (/base/soc/i2c0mux/i2c@1/imx708@1a)
Modes: 'SRGGB10_CSI2P' : 1536x864 [120.13 fps - (768, 432)/3072x1728 crop]
2304x1296 [56.03 fps - (0, 0)/4608x2592 crop]
4608x2592 [14.35 fps - (0, 0)/4608x2592 crop]
imx*
您也可以在 ,即摄像机名称处查找错误。imx219
例如
dmesg | grep imx*
如果此时仍不工作,请检查插入 CSI 端口的扁平电缆。它可能没有插好。
libcamera 命令
libcamera 命令有许多选项和参数。
如果只想拍摄静态图像,请执行以下操作。
libcamera-jpeg -o test1.jpg -t 2000 --width 640 --height 480
如果要像在实时取景中一样显示,请执行以下操作。
libcamera-hello -t 0
命令分为静态图像和视频。请参见相应选项。
libcamera-jpeg
libcamera-raw
libcamera-still
libcamera-vid
也可以通过 VNC 查看。
用 Python 处理相机模块
相机模块可以是 Python 中的 Picamera2,如果操作系统是 bullseye 或更高版本,该模块从一开始就已安装。
计划样本:
from picamera2 import Picamera2, Preview
import time
picam2 = Picamera2()
camera_config = picam2.create_preview_configuration()
picam2.configure(camera_config)
picam2.start_preview(Preview.QTGL)
picam2.start()
time.sleep(2)
picam2.capture_file("test.jpg")
官方网站: https://www.raspberrypi.com/documentation/computers/camera_software.html#rpicam-apps
根据指令使用(USB 连接的网络摄像头)。
USB 连接的网络摄像头使用一个名为 fswebcam 的应用程序,它允许基于命令的控制。
sudo apt install fswebcam
インストールしてから、ユーザーをvideoグループに加えます。今ログインしているユーザー名に置き換えて読んでください。
これでsudo権限のエラーは出なくなります。
sudo usermod -a -G video ユーザ名
基本格式是这样的
fswebcam test.jpg
默认分辨率为 352×288。
可选择指定分辨率并再次运行。
fswebcam -r 1280x720 test2.jpg

默认情况下,拍摄图像的底部会出现一个条形图,日期和时间会合成在右下角。
如果出现乱码,安装日文字体(noto-fonts)即可解决问题。
sudo apt install fonts-noto-cjk
--no-banner
如果想停止图像底部的条状输出,可使用选项使其消失。
请fswebcam --help
参阅选项。
日期文件名。
fswebcam 不提供日期或顺序编号等文件命名功能。官方版本引入了一个 shell 脚本来代替它。
Shell 脚本非常简单,只需三行代码。
在合适的位置创建一个新的 sh 文件,如下所示,添加三行,并在末尾设置执行权限。
nano webcam.sh
示例脚本的文件名中包含日期,并使用分辨率为 1280×720 的 fswebcam 执行命令。
#!/bin/bash
DATE=$(date +"%Y-%m-%d_%H-%M-%S")
fswebcam -r 1280x720 --no-banner $DATE.jpg
执行权限由 chmod 授予。
chmod +x webcam.sh
如果您已转移到同一目录,可以使用以下 shell 命令拍摄静态图像。
./webcam.sh
运行后阅读终端输出,确认文件名现在是日期和时间。
--- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
No input was specified, using the first.
--- Capturing frame...
Captured frame in 0.00 seconds.
--- Processing captured image...
Disabling banner.
Writing JPEG image to '2024-09-23_13-27-18.jpg'.
只要准备好应用程序,只需插入 USB 连接的标准网络摄像头,就能轻松使用。
对 USB 连接的网络摄像头使用 ffmpeg。
下一步是视频。
如前所述,使用 Guvcview 时,只需在图形用户界面屏幕上按一个按钮,但执行命令则需要一个单独的应用程序。
连接 CSI 的摄像头模块也会预装录制视频的命令,但也可以使用 ffmpeg 命令替代连接 USB 的网络摄像头。
了解相机支持的分辨率。
执行命令前需要检查一些事项。
该命令需要在选项中指定参数,因此必须了解所使用摄像机的支持范围。
这是为了避免错误的参数,因为不同的相机有不同的性能。
对于我们使用的 C270 摄像机,我们发现帧频 30 仅支持低于 640x 的 YUYV(YUYV 4:2:2)格式。这有点小。
MJPG(Motion-JPEG,压缩)格式也支持 1270x。
v4l2-ctl -d /dev/video0 --list-formats-ext
YUYV”(YUYV 4:2:2) 尺寸:离散 640×360 间隔:离散 0.033 秒(30.000 fps) “MJPG”(Motion-JPEG,压缩) 尺寸:离散 1280×720 间隔:离散 0.033 秒(30.000 fps间隔:离散 0.033 秒(30.000 帧/秒)
可以通过 v4l2-ctl 命令更改该设置,为 c 选项指定一个值即可。-c <ctrl>=<val>
例如
更多信息,请查看可用控件列表。
v4l2-ctl -d /dev/video0 --list-ctrls-menu
使用 ffmpeg 命令录制视频
ffmpegを使うには、様々なオプションを付けて実行することになります。
ffmpegはラズパイだけに限った話ではありません。詳しくは別途、ffmpegを調べてください。
以下命令是 C270 可以记录的选项。
摄像机还配备了麦克风,因此可以与摄像机一起采集音频。录音非常灵敏和干净。out.mkv
输出文件名在选项末尾指定。
ffmpeg -f alsa -i pulse -f v4l2 -input_format mjpeg -video_size 1280x720 -framerate 30 -i /dev/video0 -c:v copy -c:a libopus -b:a 192k "out.mkv"
详细说明从略,但由于这取决于摄像机,请根据视频尺寸和帧频的支持程度调整参数。
根据是否使用麦克风,选项的指定方式也有所不同。
Ctrl + C
停止录制。
在工业用 Raspi 上使用 USB 网络摄像头的方式与业余爱好使用的方式相同。
这很容易做到。
用于工业应用的 CSI 摄像机模块和 USB 连接的摄像机
工业 Raspi 还可以通过 USB 连接摄像头,或使用带有 CSI 端口的摄像头模块。
在使用摄像头和各种传感器的工业场所,对摄像头的需求也在不断增加。
下面的例子是常见的情况。
- 我想检测和识别人的身份。
- 我希望它们能检测到热量变化。
- 我希望能够识别我的作品的形状。
- 我想读取二维码。
- 我想获取简单的监控录像。
工业用 Raspi PL-R4 需要切换输入/输出板和更改配置,这与家用 Pi 4 不同。
否则,其使用方法与 Pi 4 相同。
工业用 Raspi 是一种可作为硬件部署的低成本设备。
与家庭使用不同的是,即使配备了坚固的外壳和连接器,低功率依然不变。
该系统可以是多功能的,配有摄像头、传感器和系统链接,因此无论规模大小,引进该系统都有好处。
文章由拉斯必达提供
非工程师也能愉快使用的 Raspberry Pi 信息网站。 raspida.com Raspida 运行着 raspida.com,这是一个非工程师也能愉快使用的 Raspberry Pi 信息网站。为有关工业用 Raspberry Pi 的 PiLink 网站供稿。