树莓派4B下用opencv-python调试CSI摄像头。
- 系统:Ubuntu mate 22.04
- 摄像头:OV5647,CSI接口
Ubuntu安装OpenCV
sudo apt update
# 安装python
sudo apt install -y python3 python3-dev python3-pip
# 用pip方法
pip3 install numpy
pip3 install scikit-build
pip3 install opencv-python
如果通过源码编译安装opencv,则需格外依赖:
sudo apt install -y build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
安装摄像头

系统启动后可以在/dev下查看,默认为video0
系统配置
- 添加摄像头权限:
sudo usermod -aG video 用户名
- 修改 /boot/firmware/config.txt 文件,在最后添加:
gpu_mem=128 # 分配足够的GPU内存(推荐128MB)
start_x=1 # 启用摄像头支持
并且将 camera_auto_detect=1,修改为 camera_auto_detect=0,或者直接注释掉。禁用自动检测摄像头,自动检测可能无法正确识别。
将 dtoverlay= 那行也注释掉。
- 修改 /etc/modules 文件,在文件最后添加:
bcm2835-v4l2 # CSI 摄像头V4L2 驱动模块
配置完成后重启,使用 vcgencmd get_camera 命令,若返回supported=1,detect=1,则摄像头模块识别成功。
其他问题
- 检查v4l2驱动支持
lsmod | grep bcm2835-v4l2
#若无加载驱动
sudo modprobe bcm2835-v4l2
- 用v4l_utils检测摄像头是否被识别
sudo apt install v4l_utils
v4l2_ctl --list-devices # 列出所有设备
v4l2_ctl –d /dev/video0 --all # 查看设备详细信息
- FFmpeg播放摄像头录像,FFmpeg是一个开源的多媒体处理工具集,支持音视频格式的转换、编码、解码、剪辑、 流处理等操作。 其中包含媒体播放器ffplay。
sudo apt install ffmpeg
ffplay -f v4l2 -input_format mjpeg -framerate 30 -video_size 640*480 -i /dev/video0
# -f v4l2: Video4Linux2(Linux 内核的视频设备接口)
# -input-format mjpeg: 强制摄像头输出 MJPEG 压缩格式,减少内存消耗
# -framerate 30: 设置捕获帧率为 30 FPS
# -video_size 640*480: 指定分辨率为 640×480
# -i /dev/video0: 输入设备路径
1349

被折叠的 条评论
为什么被折叠?



