树莓派4b csi摄像头 libcamera 驱动安装记录

最近需要用树莓派4b跑个物体跟踪程序,拿出了以前买的套件,当时配的是官方v2摄像头,用的以前的驱动,可以用raspistill -v -o test.jpg获取图片。
但是几年前的系统太老了,还是32位18.04,既然要搞,肯定要用最新的系统和软件了。结果踩了不少坑,记录如下:
首先安装最新的64位ubuntu 22.04,ubuntu已经对树莓派支持非常好了,libraspberrypi-bin、libraspberrypi-dev、raspi-config都可以直接apt安装,不需要额外添加第三方源了

装好后sudo raspi-config,enable相机接口,提示lagacy驱动不推荐使用,不过还是能启用。
然后去树莓派官方文档查询,发现已经推荐使用libcamera作为摄像头驱动了
接下来从官网这个教程安装labcamera。虽然文档里说,可以直接apt 安装libcamera-dev 这样就只需要编译安装libcamera-app,但是我测试不行,libcamera-dev明显还没做好,编译libcamera-app时头文件缺失,库也找不到,所以还是建议老老实实先编译安装libcamera,再编译安装libcamera-app。

装完之后,运行libcamera-hello,这时候可能会报两种错
第一个是

the system appears to be configured for the lagacy camera stack.

这就是提示使用了老版本的相机驱动,原因就是在sudo raspi-config开启了老版本驱动导致的。
解决方法:可以直接修改/boot/firmware/config.txt文件,如果有的话,删除或注释掉如下两条内容:

start_x=1
camera_auto_detect=1

然后在文件末尾加上

dtoverlay=imx219

(注意我是v2摄像头,所以是imx219传感器,如果用的别的型号,这里要随之更改,具体参考官方文档),保存后重启即可。

第二个错误可能是

could not open any dmaHeap device
Failed to register camera imx219 10-0010: -12

这个错误的原因其实是用户没有video权限导致的,可以sudo libcamera-hello,或者执行

sudo usermod  -aG video $USER

执行完毕后重启,再运行libcamera-hello应该出来图像了

过程中我被网上各种文章最大的误导就是vcgencmd get_camera这条指令,看别的文章执行这条指令的结果好像必须是supported=1 detected=1 才对,实际上这条指令还是针对老的驱动,用libcamera的时候,根本不需要考虑 vcgencmd get_camera,正常使用libcamera的时候,这条指令结果其实是supported=0 detected=0 才对。

好了,现在可以写个简单的python代码测试一下,这里是使用 subprocess 来运行 libcamera-vid 并将其输出到一个管道。然后用 OpenCV 从这个管道中读取并显示视频。

import cv2
import subprocess as sp
import numpy as np

# 创建一个 subprocess 来运行 libcamera-vid
command = "libcamera-vid -t 0 -o -"
pipe = sp.Popen(command, stdout=sp.PIPE, stderr=sp.PIPE, shell=True, bufsize=10**8)
# 创建一个 OpenCV 窗口
cv2.namedWindow('Libcamera with OpenCV', cv2.WINDOW_NORMAL)

while True:
    # 从管道中读取一帧图像
    raw_image = pipe.stdout.read(640*480*3)
    image = np.frombuffer(raw_image, dtype='uint8').reshape((480, 640, 3))
    # 显示图像
    cv2.imshow('Libcamera with OpenCV', image)
    # 按 'q' 键退出
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
    pipe.stdout.flush()
cv2.destroyAllWindows()

  • 1
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值