系统:64位 树莓派os官方 (2023年5月)
摄像头 ov5647,其他摄像头可能不一样!但是可以参考!
本帖子持续更新,欢迎评论区骚扰。
笔者在摄像头配置上这几天踩了无数个坑,看了上百个帖子,装了十几个系统,最后用官方最新系统配置成功。
如果你实在实在配置不成功,可以直接用我已经备份好的系统!里面已经配好了Opencv和摄像头!!!
链接:https://pan.baidu.com/s/1RNmWxQG_Pl3ouAW7GBzpbQ?pwd=qqqq
提取码:qqqq
首先,树莓派官网系统更新到bulleye后(之前是Buster),raspistill是不可用的,只能用libcamera-hello。其次在raspi-config里,必须要开启lagacy camera!
但是要注意!如果你不修改/boot/config.txt的话,你的libcamera-hello是用不了的!!!你必须在configtxt里加上dtoverlay=ov5647!当然这也是笔者踩坑的开始,因为只要你加入了dtoverlay=ov5647
,你的opencv大概率就打不开摄像头了!一定要记住!!!划重点!!!
这时候我便以为是opencv的问题了,结果换了各种opencv版本,换32位系统,都不行,光调这个就花了两天时间,这两天我很想砸电脑紫砂。没办法,各处教程都是教人添加dtoverlay=ov5647,这可能是因为他们是21年左右的系统,就是这么配置的。
所以说,总结一下正确的(针对本版本系统)配置路线:
1,我是先SSH登录,raspi-config,开VNC,开Legacy Camera,不要重启(重启也没事)。
2,输入
sudo nano /boot/config.txt
把hdmi hot plug前面的#删掉,方便VNC登录,如果删掉后hdmi这句前面有空格要删掉,顶着句首,因为Linux下对字母大小写空格都敏感,严格点吧…
其他的不要手欠不要碰!
2,这步对于有些电脑必要,有的电脑不必要。打开VNC后右上角有VNC标志,点开,然后option,troubleshooting,把第一个√点上,允许建立摄像头的画面。当然,这步我觉得不要先做,如果不出图像再说。
3,
sudo vcgencmd get_camera
正常会出现前俩都是1。代表检测成功,基本确定配置成功。
4,安装opencv,这一部分只用两句,均采用清华源加速。
第一句
pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple
第二句
pip install numpy --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple
一定要记住我这是64位树莓派,32位的这么装估计不行!
5,用opencv测试,测试代码:
import cv2
# 创建摄像头对象
cap = cv2.VideoCapture(0)
# 检查摄像头是否成功打开
if not cap.isOpened():
print("无法打开摄像头")
exit()
# 调整摄像头的曝光和对比度设置
#cap.set(cv2.CAP_PROP_AUTO_EXPOSURE, 0.25) # 关闭自动曝光
#cap.set(cv2.CAP_PROP_EXPOSURE, -13) # 设置曝光值(范围:-13到-1,值越小曝光越低)
#cap.set(cv2.CAP_PROP_CONTRAST, 60.0) # 设置对比度值(默认为1.0)
# 循环读取摄像头画面
while True:
# 读取一帧图像
ret, frame = cap.read()
# 检查图像是否成功读取
if not ret:
print("无法获取图像帧")
break
# 在窗口中显示图像
cv2.imshow("Camera", frame)
# 按下 'q' 键退出循环
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 释放摄像头资源
cap.release()
# 关闭窗口
cv2.destroyAllWindows()
注:
1,注意我的摄像头和系统版本,别的摄像头和系统可能有所差别。
2,我这是全程的配置过程,根本无需安装uv4l,我猜测是新系统直接自带uv4l。
3,连接屏幕可能不行。
特别感谢我的同学和一位交流群的朋友,给我帮了大忙。