一、前言
在 Raspberry Pi OS 2021-10-30 的版本更新中。之前的摄像头命令 raspistill 被移除,替代方案是 libcamera。在这次更新后,无法正常运用C++进行CSI摄像头的调用,但、如果在OpenCV中调用CSI摄像头会出现无数据的现象(cv2.VideoCapture(0)这时不会报错),需要对系统文件进行配置后方可调用摄像头。
在新版本中,打开如下界面已经没有Camera选项,新版本变为自动识别摄像头。网上许多教程还是停留在旧版本,对初学者造成许多不便。同时这样的配置也会对我们调用摄像头造成困难。
二、问题匹配
执行以下命令,检测是否可以识别摄像头:
vcgencmd get_camera
结果如下:
如果返回结果为: supported=0 detected=0,说明此时摄像头硬件没有被识别出来,而且设备是不支持摄像头配件的,下面是解决方法。
三、识别摄像头配置
1.修改config.txt文件
输入
sudo nano /boot/firmware/config.txt
在文件最后加上如下命令:加在最后【all】
gpu_mem=128
start_x=1
注释掉原来的摄像头自动检测语句(第17行)
#camera_auto_detect=1
Ctrl+o 写入 Ctrl+x 退出
2.修改/etc/modules
输入
sudo nano /etc/modules
在最后面添加如下命令
bcm2835-v4l2
Ctrl+o 写入 Ctrl+x 退出
保存后,重启系统!!!
3.验证
重复 二部分 内容,得到 supported=1 detected=1,则说明摄像头可以工作了
4.带来的问题
修改后输入:
libcamera-hello
命令出现“no cameras available”报错
经网上查找资料发现,这样配置后系统使用的是旧的驱动,想要解决这个问题又要将更改的文件修改,只能说鱼与熊掌不可兼得。