K230开发板扩展摄像头显示图像操作教程

K230开发板扩展摄像头显示图像操作教程

  1. 准备工作

    1. 接线说明

K230开发板配备3路MIPI-CSI摄像头接口,分别为CAM0,CAM1,CAM2,其中CAM2是作为出厂自带的默认摄像头接口,,其他两个接口规格都为22p-0.5mm规格的FPC(柔性排线)接口,每个摄像头可输出3个不同分辨率和格式的通道。

  1. 硬件连接步骤
  • MIPI-CSI摄像头连接:

  • 断电操作:断开开发板所有电源

  • 打开接口:使用镊子轻抬CSI接口金属卡扣(立式座子直接拔开,卧式座子翻开)

  • 插入摄像头:将FPC排线平整插入接口,确保金手指完全进入

  • 固定接口:按下卡扣锁定排线(卧式座子合上翻盖)

  • 上电测试:连接电源,启动开发板

  1. 程序分析

    程序源码可以点击这个链接跳转查看:[K230扩展摄像头源码]{.underline}

  1. 模块导入层:硬件接口于基础工具引入

系统模块:time用于帧率计算、os/sys提供系统级资源调用(如路径、异常处理);

硬件模块:从 K230 的media底层库中导入sensor(摄像头操作)、display(显示 设备控制)、media(媒体资源管理)接口,是代码与硬件交互的核心入口;

  1. 三路摄像头初始化:参数配置与显示层绑定

这是代码的核心硬件配置部分,K230 开发板的 3 路 MIPI-CSI 接口(CSI2/CSI1/CSI0)被依次初始化,每个接口的摄像头对象独立配置,显示层绑定策略不同,具体如下:


摄像头接口号 ID 号 分辨率 像素格式 显示层绑定 核心特点


     CAM2             2        960×540        RGB565          未绑定      开发板默认摄像头,彩色图像格式,主采集源

     CAM1             1        960×540       YUV420SP      LAYER_VIDEO1   视频编码 / AI 推理友好格式,副显示层 1

     CAM0             0        960×540       YUV420SP      LAYER_VIDEO2   同CSI1 格式,副显示层 2

  • 对象构建与复位:通过Sensor(id=N)创建对应 CSI 接口的摄像头对象,reset()完成硬件复位与初始化(必选步骤,否则摄像头无法通信);

  • 分辨率设置:set_framesize(width=960, height=540)统一将三路摄像头设为 960×540 分辨率,兼顾采集效率与硬件性能;

  • CSI2 使用RGB565:2 字节 / 像素的彩色格式,适合直接图像显示,无需格式转换;

  • CSI1/CSI0 使用YUV420SP:12 位 / 像素的亮度 - 色度分离格式,适合视频编码、AI 推理(数据量更小,硬件处理效率更高);

  • 通过bind_info(x, y)设置摄像头图像在显示设备上的坐标;

  • 调用Display.bind_layer()将 CSI1/CSI0 的图像输出到开发板的LAYER_VIDEO1/LAYER_VIDEO2显示层,实现多路图像的分区域显示;

  • CSI2 未绑定显示层:后续主循环中通过Display.show_image()手动输出其图像,是程序的「主显示源」。

    1. 显示与媒体资源初始化:硬件协同调度

  • 显示驱动初始化:指定 K230 开发板的显示驱动为LT9611(主流屏显驱动),to_ide=True开启「IDE 缓冲区输出」功能,开发阶段可直接在编程 IDE 中查看摄像头图像,无需外接物理显示屏;

  • 媒体资源管理:MediaManager.init()是 K230 媒体层的核心步骤,负责分配摄像头、显示设备的硬件总线、内存缓冲区等资源,确保多路外设协同工作不冲突。

    1. 摄像头启动与主循环:图像采集与帧率监控

  • 摄像头启动:调用run()方法激活三路摄像头的图像采集功能,此时 CSI2/CSI1/CSI0 均开始输出图像数据流;

  • 帧率计算:通过time.clock()创建时钟对象,clock.tick()记录每次循环的时间戳,clock.fps()计算并返回每秒循环次数(即帧率);

  • 主循环逻辑:程序进入无限循环后,仅采集并显示三个接口摄像头的画面。

注意:如果程序中指定的 CSI2/CSI0 接口未物理接入兼容的摄像头(如 GC2093),执行程序时会触发硬件接口异常,直接导致程序崩溃或卡死。注释掉相关摄像头接口的初始化代码即可成功执行。