64位系统树莓派4B使用摄像头(最新版)
目录
先说结论:在网上找教程时一定一定要看日期和设备型号,最好是去看官方文档,这里贴一下中文官方文档链接:摄像头软件 | Raspberry Pi 树莓派 (官网24年7月更新) (pidoc.cn)
以及摄像头无法被检测情况的官方文章:What to do if your camera is not detected - Raspberry Pi Forums
这里面详细介绍了最新的摄像头检测指南,被太多以前的教程误导了,分享一下最新的,希望有所帮助,有什么问题可以在评论区留言,我会尽力解答。
这里翻译一下怎么判断教程是不是最新的
判断教程是否与传统摄像机堆栈相关:
- 指令与
raspstill,raspvid
相关 - 使用了
vc_gencmd get_camera
- 使用的python模块为PiCamera等
- 在
/boot/firmware/congif.txt
文件中添加了start_x
或者gpu_mem
- 利用
raspi-config
打开camera选项 - 使用了
MMAL
或mmal
的术语
现代摄像机堆栈相关的教程一般包括:
libcamera-hello,libcamera-still,libcamera-vid
等指令(rpicam-hello,rpicam-still,rpicam-vid)
同- python 模块为Picamera2
- 系统会自动打开camera模块所以没有这一步
- 更高级的教程可能会包含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!
可能的原因及解决方法
- 修改/boot/firmware/config.txt文件
camera_auto_detect=0
dtoverlay=ov5647(自己的摄像头模块,不知道的可以问商家)
- 修改权限
使用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的使用实例。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 《HelloGitHub》第 108 期
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单
· C# 13 中的新增功能实操
· Supergateway:MCP服务器的远程调试与集成工具