重现步骤
CAM_CHN_ID_0 的时候正常显示
cur_frame = sensor.snapshot(chn=CAM_CHN_ID_0)
CAM_CHN_ID_2 的时候会出现错误
cur_frame = sensor.snapshot(chn=CAM_CHN_ID_2)
期待结果和实际结果
软硬件版本信息
错误日志
尝试解决过程
补充材料
import ujson
import network
import os
from time import *
from media.vencoder import *
from media.sensor import *
from media.media import *
from media.display import *
import multimedia as mm
import nncase_runtime as nn
import gc
import _thread
import time
from libs.YOLO import YOLO11
from libs.Utils import *
import ulab.numpy as np
if __name__=="__main__":
# 初始化并配置sensor
sensor = Sensor(id=0)
sensor.reset()
# 设置镜像
sensor.set_hmirror(False)
# 设置翻转
sensor.set_vflip(False)
# 通道0直接给到显示VO,格式为YUV420
sensor.set_framesize(width=1920, height=1080, chn=CAM_CHN_ID_0)
sensor.set_pixformat(sensor.RGB888, chn=CAM_CHN_ID_0)
# 通道1直接给到推流,格式为YUV420
sensor.set_framesize(width=1920, height=1080, chn=CAM_CHN_ID_1)
sensor.set_pixformat(sensor.YUV420SP, chn=CAM_CHN_ID_1)
# 通道2给到AI做算法处理,格式为RGB888
sensor.set_framesize(width=1920, height=1080, chn=CAM_CHN_ID_2)
sensor.set_pixformat(Sensor.RGB888, chn=CAM_CHN_ID_2)
Display.init(Display.VIRT, width=1920, height=1080, to_ide=True)
# 实例化 video encoder
encoder = Encoder()
encoder.SetOutBufs(VENC_CHN_ID_0, 8, 1920, 1080)
# 绑定 camera 和 venc
venc_link = MediaManager.link(sensor.bind_info(chn=CAM_CHN_ID_1)['src'], (VIDEO_ENCODE_MOD_ID, VENC_DEV_ID, VENC_CHN_ID_0))
# init media manager
MediaManager.init()
# 创建编码器
chnAttr = ChnAttrStr(encoder.PAYLOAD_TYPE_H264, encoder.H264_PROFILE_MAIN, 1920, 1080,bit_rate=400)
encoder.Create(VENC_CHN_ID_0, chnAttr)
sensor.run()
encoder.Start(VENC_CHN_ID_0)
try:
while True:
cur_frame = sensor.snapshot(chn=CAM_CHN_ID_2)
Display.show_image(cur_frame)
except Exception as e:
print(e)
finally:
sensor.stop()
del venc_link
Display.deinit()
encoder.Stop(VENC_CHN_ID_0)
encoder.Destroy(VENC_CHN_ID_0)
time.sleep_ms(50)
MediaManager.deinit()
gc.collect()
print("程序结束")