树莓派ARM64系统中如何设置opencv-python读取高清摄像头画面
2022/1/16 22:07:15
本文主要是介绍树莓派ARM64系统中如何设置opencv-python读取高清摄像头画面,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
问题
树莓派4B 8G,2021-10-30-raspios-bullseye-arm64.img
,Linux raspberrypi 5.10.63-v8+ #1459 SMP PREEMPT Wed Oct 6 16:42:49 BST 2021 aarch64 GNU/Linux
,用vcgencmd get_camera
监测,输出support=0 detected=0
。
发现使用miniconda安装的python 3.9中读取树莓派4B摄像头帧时只能以480p分辨率读取,就算代码中定义了cap的长宽也无法获取其他分辨率的图片。
树莓派的ARM64位系统用的是Bullseye版本,其中没有raspistill库,因为新版本系统舍弃了旧版本的驱动(New default camera subsystem based on libcamera. New camera demo applications (libcamera-still and libcamera-vid) have replaced raspistill and raspivid)
,并且我尝试自己编译userland libraries(https://github.com/robidouille/robidouille/tree/master/raspicam_cv)是提示不支持64位系统,所以转而寻找其他方法。
树莓派的ARM64位系统也不支持picamera库,缺少’libmmal.so’库的32位支持。因此,只能从驱动和opencv下手。
解决方案
将/boot/config.txt
中camera_auto_detect=1
注释掉,加入start_x=1
,设置 gpu_mem=512
;将/etc/modules
中只保留i2c-dev
。
sudo nano /boot/config.txt # Automatically load overlays for detected cameras #camera_auto_detect=1 注释这一行 start_x=1 加入这一行 gpu_mem=512 大于128即可 sudo nano /etc/modules i2c-dev #bcm2835-v4l2 conda install opencv vcgencmd get_camera
import cv2, time # cap = cv2.VideoCapture('/dev/video0', cv2.CAP_V4L) cap = cv2.VideoCapture(0) cap.set(cv2.CAP_PROP_FRAME_WIDTH, 2592) cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1944) # cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter.fourcc('M', 'J', 'P', 'G')) t=time.time() for i in range(10): ret, frame = cap.read() print((time.time()-t)/10,'s') print(ret, frame.shape) # frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) cv2.imwrite('/home/pi/Desktop/image.jpg', frame) cap.release()
参考资料
https://zhuanlan.zhihu.com/p/435575418
https://www.raspberrypi.com/documentation/accessories/camera.html#python-bindings-for-libcamera
https://blog.forgiveher.cn/posts/1574671872/
https://github.com/kabelhorst/userland
https://github.com/robidouille/robidouille/tree/master/raspicam_cv
官方文档提到
To override the automatic camera detection, Bullseye users will also need to delete the entry
camera_auto_detect=1
if present in the config.txt file. If you need to do edit this file then your Raspberry Pi will need to be rebooted. Setting camera_auto_detect=0 disables the boot time detection completely.
这篇关于树莓派ARM64系统中如何设置opencv-python读取高清摄像头画面的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门