为什么一段程序运行时屏幕一直红屏,但是多试了几次又偶尔可以正常显示图像

Viewed 167

重现步骤`
一开机就会这样

期待结果和实际结果
屏幕红色
补充:CAN MV多次连接也连不上(mode2和mode3都尝试了),但是尝试多了也偶尔能连上一次

软硬件版本信息
硬件canmv-dev-kit-V2.0.5软件CanMV IDE 2.9.2

错误日志
init i2c:2 freq:100000
[CANMV]: sensor id = 45
[CANMV]: find gc2145
ready load model
model size 550696
model load succeed

尝试解决过程
重启

补充材料
程序:
import sensor, image, time, lcd, gc, cmath
from maix import KPU
from maix import GPIO
from fpioa_manager import fm
from board import board_info

fm.register(6, fm.fpioa.GPIO0, force=True)
led_r = GPIO(GPIO.GPIO0, GPIO.OUT)

lcd.init() # Init lcd display
lcd.clear(lcd.RED) # Clear lcd screen.

sensor.reset() # Reset and initialize the sensor.
sensor.set_pixformat(sensor.RGB565) # Set pixel format to RGB565 (or GRAYSCALE)
sensor.set_framesize(sensor.QVGA) # Set frame size to QVGA (320x240)
#sensor.set_vflip(True) # 翻转摄像头
#sensor.set_hmirror(True) # 镜像摄像头
sensor.skip_frames(time = 1000) # Wait for settings take effect.
clock = time.clock() # Create a clock object to track the FPS.

print("ready load model")

labels = ["moto"] #类名称,按照label.txt顺序填写
anchor = (6.38, 4.84, 5.19, 6.03, 6.31, 6.09, 5.69, 6.92, 7.69, 5.81) # anchors,使用anchor.txt中第二行的值

kpu = KPU()
kpu.load_kmodel('/sd/det.kmodel')
#kpu.load_kmodel(0x300000, 584744)
kpu.init_yolo2(anchor, anchor_num=(int)(len(anchor)/2), img_w=320, img_h=240, net_w=320 , net_h=240 ,layer_w=10 ,layer_h=8, threshold=0.5 , nms_value=0.3, classes=len(labels))
led_r.value(1)

while(True):
gc.collect()

clock.tick()
img = sensor.snapshot()

kpu.run_with_output(img)
dect = kpu.regionlayer_yolo2()

fps = clock.fps()

if len(dect) > 0:
    led_r.value(0)
    for l in dect :
        a = img.draw_rectangle(l[0],l[1],l[2],l[3],color=(0,255,0))

        info = "%s %.3f" % (labels[l[4]], l[5])
        a = img.draw_string(l[0],l[1],info,color=(255,0,0),scale=2.0)
        print(info)
        del info
if len(dect) == 0:
   led_r.value(1)
a = img.draw_string(0, 0, "%2.1ffps" %(fps),color=(0,60,255),scale=2.0)
lcd.display(img)

故障现象:
IMG_20241215_023351(1)(1).jpg

1 Answers

你是调试的时候这样还是没插电脑直接运行这样,lcd.clear(lcd.RED) # Clear lcd screen.这句就是把屏幕设置成红色