K230一个摄像头当三个用,源码参考

源码

'''
实验名称:单摄像头多通道使用
实验平台:01Studio CanMV K230
说明:编程实现摄像头三通道使用。
教程:wiki.01studio.cc
'''

import time, os, sys
from media.sensor import *
from media.display import *
from media.media import *

def camera_test():
    print("camera_test")

    # 构建一个默认配置的Sensor对象
    sensor = Sensor()
    # 重置传感器
    sensor.reset()

    # 设置chn0输出大小为800x480
    sensor.set_framesize(width=800, height=480)
    # 设置chn0输出格式
    sensor.set_pixformat(Sensor.YUV420SP)

    # 绑定传感器chn0到display layer video 1
    bind_info_chn0 = sensor.bind_info(chn=CAM_CHN_ID_0)
    Display.bind_layer(**bind_info_chn0, layer=Display.LAYER_VIDEO1)

    # 设置chn1输出大小为320x240
    sensor.set_framesize(width=320, height=240, chn=CAM_CHN_ID_1)
    # 设置chn1输出格式
    sensor.set_pixformat(Sensor.RGB888, chn=CAM_CHN_ID_1)

    # 设置chn2输出大小为320x240
    sensor.set_framesize(width=320, height=240, chn=CAM_CHN_ID_2)
    # 设置chn2输出格式
    sensor.set_pixformat(Sensor.RGB565, chn=CAM_CHN_ID_2)

    # 使用LCD作为显示输出
    Display.init(Display.ST7701, to_ide=True)
    # 初始化媒体管理器
    MediaManager.init()
    # 传感器开始运行
    sensor.run()

    try:
        while True:
            # 捕获 CAM_CHN_ID_1 的快照
            img = sensor.snapshot(chn = CAM_CHN_ID_1)
            Display.show_image(img, alpha = 500)

            # 捕获 CAM_CHN_ID_2 的快照
            img = sensor.snapshot(chn=CAM_CHN_ID_2)

            Display.show_image(img, x=480, y=0, layer=Display.LAYER_OSD1)

    except KeyboardInterrupt as e:
        print("user stop: ", e)
    except BaseException as e:
        print(f"Exception {e}")
    # sensor stop run
    sensor.stop()
    # deinit display
    Display.deinit()
    os.exitpoint(os.EXITPOINT_ENABLE_SLEEP)
    time.sleep_ms(100)
    # release media buffer
    MediaManager.deinit()

if __name__ == "__main__":
    os.exitpoint(os.EXITPOINT_ENABLE)
    camera_test()

运行效果: