K230的ISP(图像信号处理器)通常支持多通道输出,常见配置为3个独立通道

发布于:2025-05-07 ⋅ 阅读:(47) ⋅ 点赞:(0)

 也就是一个摄像头可以拍摄三种配置的图片,这样就可以调用三种:

img_try = sensor.snapshot(chn=CAM_CHN_ID_0)

img_try2 = sensor.snapshot(chn=CAM_CHN_ID_1)

img_try3 = sensor.snapshot(chn=CAM_CHN_ID_2)

这样可以一图多用
eg:

    # 初始化并配置sensor
    sensor = Sensor(id = 1)
    sensor.reset()
    # 设置镜像
    sensor.set_hmirror(False)
    # 设置翻转
    sensor.set_vflip(False)
# 通道0直接给到显示VO,格式为YUV420
    sensor.set_framesize(width = DISPLAY_WIDTH, height = DISPLAY_HEIGHT)
    sensor.set_pixformat(PIXEL_FORMAT_YUV_SEMIPLANAR_420)
    
    # 通道1直接给到保存,格式为RGB565
    sensor.set_framesize(width=DISPLAY_WIDTH, height=DISPLAY_HEIGHT, chn=CAM_CHN_ID_1)
    sensor.set_pixformat(Sensor.RGB565, chn=CAM_CHN_ID_1)
    
    # 通道2给到AI做算法处理,格式为RGB888
    sensor.set_framesize(width = OUT_RGB888P_WIDTH , height = OUT_RGB888P_HEIGH, chn=CAM_CHN_ID_2)
    sensor.set_pixformat(PIXEL_FORMAT_RGB_888_PLANAR, chn=CAM_CHN_ID_2)
  1. K230的ISP(图像信号处理器)通常支持多通道输出,常见配置为3个独立通道。
    • 每个通道可配置不同的分辨率与格式,例如:

      • CAM_CHN_ID_0: 用于LCD显示(如800x480 YUV420)

      • CAM_CHN_ID_1: 用于AI算法输入(如1080x720 RGB888)

      • CAM_CHN_ID_2: 用于录像或二次处理(如640x480 JPEG)

  2. 通道配置示例代码

from media.sensor import *
from media.media import *

# 初始化摄像头
sensor.reset()
sensor.set_pixformat(PIXEL_FORMAT_YUV_SEMIPLANAR_420)  # 通道0格式
sensor.set_framesize(800, 480, chn=CAM_CHN_ID_0)       # 通道0: 显示

sensor.set_pixformat(PIXEL_FORMAT_RGB_888_PLANAR, chn=CAM_CHN_ID_1)
sensor.set_framesize(1080, 720, chn=CAM_CHN_ID_1)       # 通道1: AI处理

sensor.set_pixformat(PIXEL_FORMAT_JPEG, chn=CAM_CHN_ID_2)
sensor.set_framesize(640, 480, chn=CAM_CHN_ID_2)        # 通道2: 拍照
  1. 关键限制

    • 总带宽限制:所有通道的分辨率与帧率乘积之和需小于传感器接口带宽。例如:

      800x480@30fps + 1080x720@15fps + 640x480@10fps ≤ Max Bandwidth
    • 内存占用:每个通道需要独立缓冲区,开启3个通道时需确保内存足够(建议≥128MB)

  2. 验证多通道是否生效

# 捕获各通道图像测试
img_chn0 = sensor.snapshot(chn=CAM_CHN_ID_0)
print("通道0图像尺寸:", img_chn0.width(), "x", img_chn0.height())

img_chn1 = sensor.snapshot(chn=CAM_CHN_ID_1)
print("通道1图像格式:", "RGB888" if img_chn1.format()==image.RGBP888 else "其他")

img_chn2 = sensor.snapshot(chn=CAM_CHN_ID_2)
print("通道2数据长度:", len(img_chn2.to_bytes()))  # JPEG大小
  1. 典型错误处理

    • 资源不足报错:若出现MemoryError,尝试降低分辨率或帧率

    • 格式冲突:确保不同通道的像素格式兼容传感器能力(如YUV和RGB不可同时最高分辨率)

结论:CAM_CHN_ID_1是三个可用通道中的一个,K230摄像头可同时开启三个独立通道,但需合理配置参数以避免超限。实际开发中建议从双通道开始验证,逐步增加。


网站公告

今日签到

点亮在社区的每一天
去签到