K230开发板扩展摄像头显示图像操作教程
-
准备工作
- 接线说明
K230开发板配备3路MIPI-CSI摄像头接口,分别为CAM0,CAM1,CAM2,其中CAM2是作为出厂自带的默认摄像头接口,,其他两个接口规格都为22p-0.5mm规格的FPC(柔性排线)接口,每个摄像头可输出3个不同分辨率和格式的通道。
- 硬件连接步骤
-
MIPI-CSI摄像头连接:
-
断电操作:断开开发板所有电源
-
打开接口:使用镊子轻抬CSI接口金属卡扣(立式座子直接拔开,卧式座子翻开)
-
插入摄像头:将FPC排线平整插入接口,确保金手指完全进入
-
固定接口:按下卡扣锁定排线(卧式座子合上翻盖)
-
上电测试:连接电源,启动开发板
-
程序分析
程序源码可以点击这个链接跳转查看:[K230扩展摄像头源码]{.underline}
- 模块导入层:硬件接口于基础工具引入

系统模块:time用于帧率计算、os/sys提供系统级资源调用(如路径、异常处理);
硬件模块:从 K230 的media底层库中导入sensor(摄像头操作)、display(显示 设备控制)、media(媒体资源管理)接口,是代码与硬件交互的核心入口;
- 三路摄像头初始化:参数配置与显示层绑定
这是代码的核心硬件配置部分,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()手动输出其图像,是程序的「主显示源」。
- 显示与媒体资源初始化:硬件协同调度

-
显示驱动初始化:指定 K230 开发板的显示驱动为LT9611(主流屏显驱动),to_ide=True开启「IDE 缓冲区输出」功能,开发阶段可直接在编程 IDE 中查看摄像头图像,无需外接物理显示屏;
-
媒体资源管理:MediaManager.init()是 K230 媒体层的核心步骤,负责分配摄像头、显示设备的硬件总线、内存缓冲区等资源,确保多路外设协同工作不冲突。
- 摄像头启动与主循环:图像采集与帧率监控
-
摄像头启动:调用run()方法激活三路摄像头的图像采集功能,此时 CSI2/CSI1/CSI0 均开始输出图像数据流;
-
帧率计算:通过time.clock()创建时钟对象,clock.tick()记录每次循环的时间戳,clock.fps()计算并返回每秒循环次数(即帧率);
-
主循环逻辑:程序进入无限循环后,仅采集并显示三个接口摄像头的画面。
注意:如果程序中指定的 CSI2/CSI0 接口未物理接入兼容的摄像头(如 GC2093),执行程序时会触发硬件接口异常,直接导致程序崩溃或卡死。注释掉相关摄像头接口的初始化代码即可成功执行。



