源码
'''
实验名称:单摄像头多通道使用
实验平台: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()
运行效果: