K230在使用摄像头时,如何实现多次复位

Viewed 102

问题描述


在使用PipeLine模块后,尝试使用pl.destroy()与sensor.stop,跳出pl模块,并且重新初始化摄像头处理其他项目,但是使用sensor.reset重新初始化后,此时不出图像也不报错,终端只返回一条find sensor gc2093_csi2, type 30, output 1920x1080@60,然后k230卡死,需要重启才可以连接ide

复现步骤


1.上电开启k230,并启用main.py
2.正常运行AI模型,此时摄像头功能正常
3.跳出AI模型,并且使用pl.destroy删除pl实例
4.重新设计sensor模块,并且使用sensor.reset初始化
5.初始化后出现不出图像也不报错,终端只返回一条find sensor gc2093_csi2, type 30, output 1920x1080@60,然后k230卡死

硬件板卡


01Studio k230

软件版本


CanMV_K230_01Studio_micropython_v1.3-0-g8dd764f_nncase_v2.9.0

其他信息


#该代码于1.3版本测试,报错了RuntimeError: sensor(0) snapshot chn(1) failed(3)

import time
import os
import sys
from libs.PipeLine import PipeLine, ScopedTiming
from media.sensor import *
from media.display import *
from media.media import *

#初始化pl
sensor = Sensor(width=1920, height=1080)
rgb888p_size=[1920, 1080]
display_mode='hdmi'
display_size=[1920,1080]
pl=PipeLine(rgb888p_size=rgb888p_size,display_size=display_size,display_mode=display_mode)
pl.create(sensor = sensor)
while True:
    sensor.set_framesize(width=1920, height=1080, chn=CAM_CHN_ID_1)
    sensor.set_pixformat(Sensor.RGB565, chn=CAM_CHN_ID_1)
    img = sensor.snapshot(chn=CAM_CHN_ID_1)
    Display.show_image(img)
1 Answers

PipeLine模块是专门为双通道AIDemo开发设计的一个流程,里面包含sensor/display模块的封装操作,如果想直接使用sensor,就不要用pipeline了,可以查看一下/sdcard/libs/PipeLine.py中的代码,看一下不同的方法具体封装了哪些操作,不要做重复的释放和重置。

你好,我想再问一下,我查看了一下pipeline中并没有使用CAM_CHN_ID_1这一个通道,于是我用CAM_CHN_ID_1去做其他的开发,但是在这个情况下使用img = sensor.snapshot(chn=CAM_CHN_ID_1),会导致报错,报错代码为RuntimeError: sensor(0) snapshot chn(1) failed(3),请问一下,这个报错该如何解决

换成1.4的固件试一下

你好,更新之后依旧是出现报错,然后例程的程序可以运行(1.3/1.4)都行