树莓派在较新版本官方系统使用 CSI 摄像头时的问题及解决办法

最近,在人脸识别门禁系统开发过程中,因树莓派4B硬件升级引起驱动兼容性问题,使我遭遇重重困难。在此,分享这过程中的经验与教训,以供参考。

新系统的摄像头驱动改动

在最初开始本项目时,作者首先进行了树莓派官方系统的升级,参照网络上资深人士的教程进行细化配置。遗憾的是,raspi-config工具中缺少相关选项,导致摄像头功能无法正常设置。更糟糕的是,新版系统相较于旧版丧失了部分功能,这引发了对其实用性的质疑。为了避免这类问题,作者决定重新安装官方烧录软件中的早期版本,虽然该版本非最新的,但也有必然的优势和担忧。

然而事实表明,该“旧版”已彻底删除老款摄像机所需的驱动及框架文件,全面启用全新指令系统。我尝试按照旧版教程执行涉及-hello指令的操作,竟一度导致摄像机无法正常启动。经过反复精准测试,我发现官方已将驱动程序更新至新形态,这让我对未来研发工作产生担忧心理。

supported=1 detected=1, libcamera interfaces=0

sudo nano  /boot/config.txt

树莓派在较新版本官方系统使用 CSI 摄像头时的问题及解决办法

GPU内存分配的问题

# Automatically load overlays for detected cameras
start_x=1

在实验进行期间,我运用了-jpeg命令并获得意外的错误提示。经过网络深入调查,这很大程度上归咎于GPU内存分配过剩,从而限制了相机缓存。因此我深深明白,之前分配给GPU的512MB内存似乎并不合适。于是,我决心予以调整探寻解决之道。

首先通过图形界面尝试调试GPU内存,在首选项中寻找Pi配置未果后,转而利用终端进行raspi-config配置,成功将GPU内存从原有的512MB降到256MB。至此,我们可以看到-jpeg命令的执行获得了预期效果,错误信息消失无踪,足以令人感到欣喜与鼓舞。

# Automatically load overlays for detected cameras
#start_x=1
camera_auto_detect=1

使用旧驱动的必要性

supported=0 detected=0, libcamera interfaces=0

然而,短暂的成功喜悦难以延续。探索".read"指令时,摄像头功能回报为空值("None")的困扰接踵而至。经查询得知,旧版驱动或许能解决此问题。因此,我重回raspi-config进行设置,重启了摄像头选项,问题终于得到解决。此次经历使我深刻认识到,若要平稳启用摄像头,需舍弃更新驱动,回归旧版操作方式。

总结与反思

在本次挑战中,虽然人脸识别门禁项目获得一定进展,但我仍对树莓派官方的更新表示遗憾。由于新系统的限制,我不得不审视其是否充分考虑到用户的需求。尽管在此过程中积累了丰富的经验,但对官方决策仍有保留意见。

ERROR V4L2 v4l2_videodevice.cpp:1241 /dev/video14[18:cap]: Unable to request 1 buffers: Cannot allocate memory ERROR: 
*** failed to allocate capture buffers ***

在此次项目执行中,本人不仅提升了解决复杂技术问题的能力,更深刻认识到在科技日新月异的环境下,保持思维敏捷并适时调整的重要性。如您也有类似困扰,期待分享您成功应对的宝贵经验与策略。

作者头像
比特派钱包官网创始人

bitpie比特派钱包官方

上一篇:比特币数字钱包转账全流程详解:如何轻松完成转账操作
下一篇:探究抖音账号交易平台合法性,揭秘其套路与风险

相关推荐