最近,在人脸识别门禁系统开发过程中,因树莓派4B硬件升级引起驱动兼容性问题,使我遭遇重重困难。在此,分享这过程中的经验与教训,以供参考。
新系统的摄像头驱动改动
在最初开始本项目时,作者首先进行了树莓派官方系统的升级,参照网络上资深人士的教程进行细化配置。遗憾的是,raspi-config工具中缺少相关选项,导致摄像头功能无法正常设置。更糟糕的是,新版系统相较于旧版丧失了部分功能,这引发了对其实用性的质疑。为了避免这类问题,作者决定重新安装官方烧录软件中的早期版本,虽然该版本非最新的,但也有必然的优势和担忧。
然而事实表明,该“旧版”已彻底删除老款摄像机所需的驱动及框架文件,全面启用全新指令系统。我尝试按照旧版教程执行涉及-hello指令的操作,竟一度导致摄像机无法正常启动。经过反复精准测试,我发现官方已将驱动程序更新至新形态,这让我对未来研发工作产生担忧心理。
supported=1 detected=1, libcamera interfaces=0
sudo nano /boot/config.txt
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 ***
在此次项目执行中,本人不仅提升了解决复杂技术问题的能力,更深刻认识到在科技日新月异的环境下,保持思维敏捷并适时调整的重要性。如您也有类似困扰,期待分享您成功应对的宝贵经验与策略。