ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

IoT-For-Beginners 的 Raspberry Pi 摄像头未被检测到,如何启用摄像头接口并测试拍照

IoT-For-Beginners 的 Raspberry Pi 摄像头未被检测到,如何启用摄像头接口并测试拍照 IoT-For-Beginners 的 Raspberry Pi 摄像头未被检测到如何启用摄像头接口并测试拍照【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners在 IoT-For-Beginners 课程的制造Manufacturing项目中Check fruit quality from an IoT device 这节课需要 Raspberry Pi 连接摄像头拍照并把图片发给图像分类器。如果你的 Pi 识别不到摄像头典型的报错是mmal: mmal_vc_component_create: failed to create component vc.ril.camera仓库的 TROUBLESHOOTING.md 和第 2 课的 摄像头教程 共同给出了处理路径检查排线物理连接、启用摄像头接口Bullseye 上还要启用 legacy 相机软件、更新固件最后用拍照命令验证。适用硬件是 Raspberry Pi 搭配其专用的 Raspberry Pi Camera Module摄像头通过 Pi 上的专用摄像头接口MIPI-CSI连接。一、先检查排线是否正确连接给 Pi 断电然后按摄像头教程中的硬件步骤逐项核对把随机排线连接到摄像头一端轻轻拉起固定座上的黑色塑料卡扣使其弹出一点将排线滑入插座蓝色一面背对镜头、金属针脚条面向镜头插到底后再把卡扣推回原位。将 Grove Base Hat 从 Pi 上取下。把排线穿过 Grove Base Hat 上的摄像头开槽蓝色一面朝向标有A0、A1等字样的模拟接口一侧。将排线插入 Pi 的摄像头接口同样是先拉起黑色卡扣、插入排线、再把卡扣推回固定。重新装回 Grove Base Hat。关于 Pi 端排线蓝色一面的朝向仓库内两份文档的说法不一致本文按原文保留实际操作时请对照实物插槽确认课程教程以 Pi 4 为对象蓝色一面应朝向 USB 与网口一侧the blue side of the cable should face the USB and ethernet ports。故障排查指南Pi Zero 上蓝色一面朝向 USB 口Pi 4 上蓝色一面应背离 USB 口。二、启用摄像头接口物理连接确认后按 TROUBLESHOOTING.md 中的 Camera not detected on Raspberry Pi 一节启用摄像头接口sudo raspi-config进入菜单后选择Interface Options → Camera选Enable。如果你使用的是 Raspberry Pi OS Bullseye并且要按课程流程用 PiCamera Python 库测试拍照还需要启用 legacy 相机软件。教程给出了非交互命令sudo raspi-config nonint do_legacy 0 sudo reboot该命令切换设置以启用 legacy 相机软件然后重启 Pi 使其生效。教程中说明Bullseye 默认禁用了摄像头接口camera socket而启用 legacy 相机软件会自动同时启用该接口同时由于 Bullseye 更换了相机软件栈PiCamera 库默认无法工作这正是需要先执行这一步的原因。三、更新固件前面步骤未解决时故障排查指南在启用接口之后还列了固件更新这一步如果执行完上一节问题仍未解决继续sudo apt update sudo apt full-upgrade sudo reboot四、测试拍照并验证4.1 用 raspistill 做最基本的检测故障排查指南给出的测试命令raspistill -o test.jpg该命令会把一张照片写入test.jpg。文件生成后可以打开查看确认摄像头已被 Pi 识别。4.2 用 PiCamera 库按课程流程拍照如果要继续课程的后续步骤把图片发给分类器需要按教程用 PiCamera 库实测。前提Bullseye 上已完成上面的 legacy 相机模式启用步骤。在pi用户主目录下新建fruit-quality-detector文件夹并创建app.py用 VS Code 打开该文件夹。仓库中也提供了 完整示例代码可直接对照。安装 PiCamera 库pip3 install picamera在app.py中写入以下代码import io import time from picamera import PiCamera camera PiCamera() camera.resolution (640, 480) camera.rotation 0 time.sleep(2) image io.BytesIO() camera.capture(image, jpeg) image.seek(0) with open(image.jpg, wb) as image_file: image_file.write(image.read())教程对关键设置的说明摄像头支持更高分辨率最高 3280x2464但后端的图像分类器在小尺寸图片227x227上即可工作所以无需采集更大图片。camera.rotation设置图像旋转角度。排线从摄像头底部接入如果把排线悬垂到摄像头上方便于对准被摄物应把该值设为 180。摄像头启动需要几秒钟因此保留time.sleep(2)。让摄像头对准物体运行程序。验证方式教程原文当前文件夹会生成image.jpg在 VS Code 资源管理器中可见选中该文件查看图片。如果方向不对修改camera.rotation的值后重新拍摄。五、限制与已知问题PiCamera 库在 Bullseye 上默认不可用必须先启用 legacy 相机软件教程说明其替代方案 PiCamera2 当时文档撰写时还未到可使用的状态。拍照成功但图片模糊、发暗或过曝时故障排查指南给出的处理项撕掉镜头上的保护膜镜头可调焦则调整对焦、保证充足光线、在代码中调整曝光、ISO、白平衡、保持相机稳定以及分辨率不要超过摄像头支持的最大值。排线在 Pi 端的朝向在课程教程与故障排查指南之间存在不一致描述见第一节插入前务必核对实物。摄像头验证通过后下一步按课程继续参考 single-board-computer-classify-image.md安装azure-cognitiveservices-vision-customvision包用 Prediction URL 和 Prediction-Key 把拍到的图片发送到 Custom Vision 服务完成分类。【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进