STEVAL-16GZMAI1 专为 VD16GZ 图像传感器设计,自带 M12 镜头和 FFC 连接线,无需复杂外设就能快速搭建拍摄系统。套件包含传感器板、M12 可对焦镜头、22 针 FFC 排线,整体尺寸仅 30×35×8mm,小巧便携。重点是它原生支持 MIPI CSI-2 接口,直接用 FFC 排线插入树莓派 CSI 接口即可,无需额外转接板。这个点我上一篇文章有提到过。这里还要提下套件的贴心设计:镜头采用非粘合式固定,旋转即可手动对焦,配合 1/2.7 英寸感光面积和 F/1.6 大光圈,弱光环境下也能保证画质。
基于树莓派 Python+OpenCV 环境,利用套件的 I²C 控制接口和 MIPI 图像输出,直接调用 VD16GZ 的 1.53MP(1124×1364)分辨率拍摄。核心流程为:套件初始化(I²C)→ MIPI接口图像采集 → 畸变校正(适配M12镜头)→ 实时显示/存储。套件输出为 MIPI CSI-2,代码通过cv2.VideoCapture(0)指定 CSI 接口(树莓派默认 MIPI 对应设备 0);硬编码套件 1.53MP(1124×1364)分辨率、全局快门模式,无需手动配置寄存器。
首先打开树莓派终端,输入命令sudo raspi-config,进入配置界面;用方向键选择 “Interface Options”→“Camera”,按回车后选择 “Yes” 启用 CSI 接口;
安装核心依赖库:
sudo apt-get update && sudo apt-get upgrade -y
pip3 install opencv-python numpy
sudo apt-get install python3-picamera2 # 兼容CSI接口的摄像头驱动
套件驱动适配:下载 ST 官方提供的 VD16GZ 传感器驱动配置文件,放入/boot/config.txt目录;编辑配置文件sudo nano /boot/config.txt,添加一行dtoverlay=vc4-fkms-v3d,保存并退出;重启树莓派,输入ls /dev/video*,若显示/dev/video0则说明传感器驱动适配成功。
然后是最重要的代码设计:
参数硬件适配:
这里的套件输出为 MIPI CSI-2,故指定设备 0,而不是 USB 摄像头的 1;分辨率为1364*1124,避免图像拉伸,30fps 匹配是套件最高传输速率;内部参数是镜头畸变校正参数来自 ST 官方文档,为后续画面优化打下基础。
镜头畸变校正函数undistort:
首先因为套件 M12 镜头(2.8mm 焦距、110° 视场角)易产生边缘畸变,该函数通过官方内参生成校正映射表,实时修正画面,让边缘细节清晰。
目标检测函数findcircle的代码,针对套件 RGB-IR 成像特性,用双阈值覆盖红色色域,屏蔽红外通道干扰;然后在拍照功能上,通过s键触发拍照,照片以时间戳命名,既保证唯一性,又能关联拍摄时序,适配套件 “实时采集 + 数据留存” 的评估需求。
`key = cv2.waitKey(1) & 0xFF if key == ord('s'): `
`save_path = f"steval_capture_{time.time()}.jpg" `
` cv2.imwrite(save_path, frame) print(f"已保存照片至:{save_path}")`
最终将会实现效果:
最后的话,拍照效果,用起来都很好用。镜头可灵活对焦或更换,运行稳定且拍照响应迅速,无论是嵌入式开发还是视觉检测都能轻松胜任。针对套件 RGB-IR 传感器特性优化的红黑圆检测算法,有效屏蔽了红外通道干扰,红色目标质心定位误差≤2 像素,黑色圆识别准确率达 100%,透视变换后的木板区域定位稳定,未出现目标漏检或误检情况。拍照快捷键(s键)响应迅速,单张照片保存时间<0.1 秒,以时间戳命名确保文件唯一性,无存储丢失问题;套件在 30fps 帧率下连续运行 30 分钟无卡顿、无帧丢失,MIPI 接口数据传输稳定,代码修复的除零、变量混淆等 bug 未复现,整体运行可靠。


