欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > Yocto + 树莓派摄像头驱动完整指南

Yocto + 树莓派摄像头驱动完整指南

2025/4/5 14:48:27 来源:https://blog.csdn.net/Interview_TC/article/details/145961542  浏览:    关键词:Yocto + 树莓派摄像头驱动完整指南
—— 从驱动配置、Yocto 构建,到 OpenCV 实战

在树莓派上运行摄像头,在官方的 Raspberry Pi OS 可能很简单,但在 Yocto 项目中,需要手动配置驱动、设备树、软件依赖 才能确保摄像头正常工作。本篇文章从 BSP 驱动配置Yocto 关键配置OpenCV 实战 讲解如何 让树莓派摄像头在 Yocto 镜像中正常运行,并最终在 屏幕上实时显示画面


1️⃣ Yocto 关键知识点

在 Yocto 项目中,摄像头的支持依赖:

📌 关键点

  1. BSP(Board Support Package)配置

    • 设备树(Device Tree)确保摄像头硬件被正确注册
    • config.txt 配置 GPU、摄像头固件
  2. 内核(Kernel)驱动

    • bcm2835-v4l2 模块:用于支持 V4L2 摄像头设备
    • libcamera:现代化的摄像头用户空间 API
    • v4l-utils:V4L2 设备管理工具
  3. 镜像构建(Yocto Bitbake)

    • IMAGE_INSTALL 确保安装 libcameraffmpegopencv
    • IMAGE_FEATURES 使系统支持 GUI 显示
    • systemd 启动脚本 让摄像头 开机自动运行
  4. 用户空间(User Space)

    • ffmpeg 录制视频
    • v4l2-ctl 进行摄像头测试
    • OpenCV 进行实时图像处理

2️⃣ 驱动配置:设备树 & 内核

📌 2.1 设备树(Device Tree)配置

树莓派的摄像头使用 MIPI CSI-2 接口,在设备树中需要正确注册。

修改 Yocto BSP config.txt,确保系统启用摄像头:

# 让系统自动检测摄像头
camera_auto_detect=1
# 启用 VC4-KMS 显示驱动,支持 `libcamera`
dtoverlay=vc4-kms-v3d
# 启用摄像头固件支持
start_x=1
# GPU 预留 128MB 内存(摄像头和 GUI 需要)
gpu_mem=128

🔹 关键点

  • camera_auto_detect=1 让树莓派 自动检测摄像头
  • dtoverlay=vc4-kms-v3dlibcameraffmpeg 可以正确访问摄像头
  • start_x=1 让 GPU 能够处理 ISP(图像信号处理)

📌 2.2 加载摄像头驱动

在 Yocto 里,摄像头驱动需要手动加载

modprobe bcm2835_v4l2

确保 bcm2835_v4l2 被自动加载

echo "bcm2835_v4l2" >> /etc/modules

🔹 驱动解释

  • bcm2835-v4l2树莓派的 V4L2(Video4Linux)驱动
  • /dev/video0 设备正确生成
  • libcamera 需要 vc4-kms-v3dbcm2835-v4l2 才能正常工作

3️⃣ Yocto 镜像配置

为了让 Yocto 镜像包含摄像头所需的软件,修改 rpi-test-image.bb

# 继承 rpi-test-image
include recipes-core/images/rpi-test-image.bb# 添加 SSH 服务器,方便远程调试
IMAGE_INSTALL:append = " openssh openssh-sftp-server"# 启用 X11 图形界面支持
IMAGE_FEATURES += "x11-base x11-sato splash"# 安装摄像头相关软件
IMAGE_INSTALL += " libcamera libcamera-apps v4l-utils"# 安装 ffmpeg 和 OpenCV
IMAGE_INSTALL  += " ffmpeg opencv opencv-apps python3-opencv"

🔹 关键点

  • libcamera 用于摄像头 API
  • v4l-utilsv4l2-ctl 可以测试摄像头
  • opencv 用于 Python 处理摄像头画面
  • ffmpeg 让摄像头 支持录制视频

4️⃣ 编译 Yocto 镜像

完成配置后,运行:

bitbake core-image-sato

然后刷写到 SD 卡:

dd if=tmp/deploy/images/raspberrypi4-64/core-image-sato-raspberrypi4-64.wic of=/dev/sdX bs=4M status=progress

5️⃣ 摄像头驱动调试

📌 5.1 确保 /dev/video0 存在

ls /dev/video*

如果 /dev/video0 不存在,手动加载驱动:

modprobe bcm2835_v4l2

📌 5.2 使用 v4l2-ctl 测试摄像头

v4l2-ctl --list-devices

如果摄像头已检测到,运行:

v4l2-ctl --stream-mmap --stream-count=100 -d /dev/video0

6️⃣ 实战:运行 OpenCV 进行摄像头实时显示

运行以下 Python 代码:

import cv2cap = cv2.VideoCapture(0)while True:ret, frame = cap.read()if not ret:breakcv2.imshow("摄像头", frame)if cv2.waitKey(1) & 0xFF == ord('q'):  # 按 'q' 退出breakcap.release()
cv2.destroyAllWindows()

🎥 成功运行后,摄像头画面会在屏幕上实时显示!


7️⃣ 其他摄像头应用

📸 7.1 使用 ffmpeg 拍照

ffmpeg -f v4l2 -video_size 1280x720 -i /dev/video0 -vframes 1 snapshot.jpg

🎥 7.2 录制视频

ffmpeg -f v4l2 -framerate 30 -video_size 1280x720 -i /dev/video0 -t 10 output.mp4

📡 7.3 实时推流

ffmpeg -f v4l2 -i /dev/video0 -f mpegts udp://192.168.1.100:1234

在 VLC 中打开:

udp://@192.168.1.100:1234

8️⃣ 结果展示

最终,摄像头成功运行,并在屏幕上实时显示:
在这里插入图片描述


🎯 结论

本篇文章完整讲解了 如何在 Yocto 项目中配置树莓派摄像头

  1. BSP 设备树配置
  2. 内核驱动 bcm2835-v4l2 加载
  3. Yocto 镜像构建
  4. v4l2-ctl & ffmpeg 测试
  5. OpenCV 实战
  6. 流媒体推送

✅ 关键命令总结

任务命令
检查 /dev/video0ls /dev/video*
测试 v4l2-ctlv4l2-ctl --list-devices
拍照ffmpeg -f v4l2 -i /dev/video0 -vframes 1 snapshot.jpg
录制视频ffmpeg -f v4l2 -i /dev/video0 -t 10 output.mp4
实时显示(OpenCV)python3 script.py

🎯 如果你对 Yocto BSP、摄像头调试有任何问题,欢迎交流!🚀

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词