文章目录

  • 利用树莓派最新系统连接摄像头所出现的问题总结
  • 前言
  • 前期工作准备:
  • 第一步:软件驱动的更新操作:
  • 第二步:开启摄像头的照相功能:
  • 第三步:开启摄像头
  • 最后


利用树莓派最新系统连接摄像头所出现的问题总结

前言

最近做一个项目的时候需要通过进行目标检测并且对目标进行比对然后进行后续实验

于是最近花了20块买了个摄像头,先通过进行摄像头的录像照相等功能进行实现

后续可能会出一篇树莓派在ROS系统下利用该摄像头进行物体识别等等功能的实现

接下来就开始正文部分啦

前期工作准备:

  • 我用的时树莓派4B板子来进行此次实验
  • 摄像头由于资金有限,所以买的是淘宝的CSI视频接口的摄像头,因为只有500W像素,有钱的可以考虑更好的设备:
    摄像头购买地址

摄像头实物:

树莓派 python读取摄像头到 HTML 树莓派摄像头识别物体_bc

整体连接:

树莓派 python读取摄像头到 HTML 树莓派摄像头识别物体_bc_02

当连接好摄像头和树莓派之后,就可以进行后续的实验啦!!

第一步:软件驱动的更新操作:

首先我们打开终端输入以下两行命令:

sudo apt-get update
sudo apt-get upgrade

但是我们输入第一行命令后可能会出现以下报错:

W: Failed to fetch http://archive.raspberrypi.org/debian/dists/jessie/Release.gpg  Could not resolve 'archive.raspberrypi.org'

W: Some index files failed to download. They have been ignored, or old ones used instead.

针对此问题的解决方法

//输入以下命令
sudo nano /etc/resolv.conf
//然后内容可能是以下的东西
nameserver 192.168.3.1
//我们将后面的ip地址改成
114.114.114.114

这样第一个命令的执行就没问题了

但是第二个命令执行的时候可能会有以下错误

E: 无法下载 http://mirrors.opencas.cn/raspbian/raspbian/pool/main/o/openssl1.0/libssl1.0.2_1.0.2q-1~deb9u1_armhf.deb  无法发起与 mirrors.opencas.cn:80 (2001:cc0:2020:4075::211) 的连接 - connect (101: 网络不可达)
E: 无法下载 http://mirrors.opencas.cn/raspbian/raspbian/pool/main/o/openssl/libssl1.1_1.1.0j-1~deb9u1_armhf.deb  无法发起与 mirrors.opencas.cn:80 (2001:cc0:2020:4075::211) 的连接 - connect (101: 网络不可达)
E: 无法下载 http://mirrors.opencas.cn/raspbian/raspbian/pool/main/o/openssl/openssl_1.1.0j-1~deb9u1_armhf.deb  无法发起与 mirrors.opencas.cn:80 (2001:cc0:2020:4075::211) 的连接 - connect (101: 网络不可达)
E: 有几个软件包无法下载,要不运行 apt-get update 或者加上 --fix-missing 的选项再试试?

这是因为树莓派默认的下载源在国外,下载速度过慢所导致的,我们需要更改下载源解决方法如下

首先备份源文件:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo cp /etc/apt/sources.list.d/raspi.list /etc/apt/sources.list.d/raspi.list.bak

然后进行更改

sudo nano /etc/apt/sources.list

修改后这个文件内容应为如下:

deb http://mirrors.aliyun.com/raspbian/raspbian/ bullseye main non-free contrib
deb-src http://mirrors.aliyun.com/raspbian/raspbian/ bullseye main non-free contrib

然后更改另外一个文件的内容

sudo nano /etc/apt/sources.list.d/raspi.list

更改如下:

deb http://mirrors.ustc.edu.cn/archive.raspberrypi.org/debian/ stretch main ui
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://archive.raspberrypi.org/debian/ stretch main ui

这样第一步的问题应该就解决了

第二步:开启摄像头的照相功能:

这一步用VNC连接或者PUTTY或者XSHELL连接都可以我这里选择用putty进行连接
输入命令

sudo raspi-config

界面如下:

树莓派 python读取摄像头到 HTML 树莓派摄像头识别物体_树莓派_03


树莓派 python读取摄像头到 HTML 树莓派摄像头识别物体_嵌入式硬件_04

树莓派 python读取摄像头到 HTML 树莓派摄像头识别物体_树莓派_05

然后保存退出,重启树莓派(这边我建议是直接电源重启)

第三步:开启摄像头

可能在其他文章中会让你们用这个命令:

raspistill -o hello.jpg -t 1000

但是在最新系统中,2021年10月以后这个命令就失效了,取而代之的是libcamera这个命令

官方也给出了几个截图和录像的命令

  • 1、libcamera-hello
  • 2、libcamera-still -e png -o test.png
  • 3、libcamera-jpeg -o test.jpg

但是这几个命令我用的都不行,后续会提到:

我们首先用以下命令先测试一下能不能用吧:

libcamera-hello

如果能用的话说明你的摄像头已经配置好啦,不能用的话接着往后看:

我们首先运行这个命令

vcgencmd get_camera

如果摄像头能使用的话应该会是以下的结果:

support=1,detected=1

如果support=0,detected=0 前面等于零是因为摄像头驱动没开,只需要用raspi-config重新开一下摄像头就行

解决detected的方法如下(前提是你的摄像头安装正确)

执行如下命令

sudo nano /boot/config.txt
//注释掉原来的摄像头自动检测语句,并添加"start_x=1"和"gpu_mem=128"

#camera_auto_detect=1
gpu_mem=128
start_x=1

然后:

sudo nano /etc/modules
在最后面添加bcm2835-v4l2 //这里是V4L2,是L不是1

这样的话再重新启动树莓派后执行:

vcgencmd get_camera

后应该会出现

support=1,detected=1

这就说明配置成功了

接着运行以下命令:

ffplay -f v4l2 -framerate 60 -video_size hd720 /dev/video0

需要注意,目前无法通过libcamera访问,会提示no camera available

应该是能够显示出录像的画面了

树莓派 python读取摄像头到 HTML 树莓派摄像头识别物体_bc_06

最后

如果要进行监控等功能的话,可以参考网上一些教程,那些是可行的这里就不再重新赘述了