64位系统树莓派4B使用摄像头(最新版)


先说结论:在网上找教程时一定一定要看日期和设备型号,最好是去看官方文档,这里贴一下中文官方文档链接:摄像头软件 | Raspberry Pi 树莓派 (官网24年7月更新) (pidoc.cn)
以及摄像头无法被检测情况的官方文章:What to do if your camera is not detected - Raspberry Pi Forums
这里面详细介绍了最新的摄像头检测指南,被太多以前的教程误导了,分享一下最新的,希望有所帮助,有什么问题可以在评论区留言,我会尽力解答。
这里翻译一下怎么判断教程是不是最新的

判断教程是否与传统摄像机堆栈相关:

  1. 指令与raspstill,raspvid相关
  2. 使用了vc_gencmd get_camera
  3. 使用的python模块为PiCamera等
  4. /boot/firmware/congif.txt文件中添加了start_x或者gpu_mem
  5. 利用raspi-config打开camera选项
  6. 使用了MMALmmal的术语

现代摄像机堆栈相关的教程一般包括:

  1. libcamera-hello,libcamera-still,libcamera-vid等指令(rpicam-hello,rpicam-still,rpicam-vid)
  2. python 模块为Picamera2
  3. 系统会自动打开camera模块所以没有这一步
  4. 更高级的教程可能会包含CMA 内存指令的修改

贴一下Picamera2的官方文档:picamera2-manual.pdf (raspberrypi.com)

问题一:No camera available

我的摄像头使用的是v1模块,即ov5647。

$ libcamera-hello --list-cameras
Could not open any dmaHeap device
No cameras available!

可能的原因及解决方法

  1. 修改/boot/firmware/config.txt文件
camera_auto_detect=0
dtoverlay=ov5647(自己的摄像头模块,不知道的可以问商家)
  1. 修改权限
    使用sudo libcamera-hello --list-cameras

问题二:failed to import fd 20

$ sudo libcamera-hello
terminate called after throwing an instance of 'std::runtime_error'
  what(): failed to import fd 20

解决方法

使用 sudo libcamera-hello --qt-preview 指令

补充(2024.8.19)

研究了一下os64的c++api:libcamera,才发现还不适配opencv,要用又得回到之前的legacy camera,相关配置参考文章:解决树莓派4B x64系统下OpenCV无法运用C++调用CSI摄像头的问题_树莓派4 csi-CSDN博客
配置完记得sudo reboot,最后得到

$ sudo vcgencmd get_camera
supported=1 detected=1, libcamera interfaces=0

如果是用python的话可以用picamera2库而不用回退传统摄像头堆栈。使用实例见github中picamera2的使用实例。

posted @   播code员  阅读(678)  评论(0编辑  收藏  举报
编辑推荐:
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
阅读排行:
· 《HelloGitHub》第 108 期
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单
· C# 13 中的新增功能实操
· Supergateway:MCP服务器的远程调试与集成工具
点击右上角即可分享
微信分享提示