为什么会出现这个问题以及draw_string还能不能用

Viewed 38

重现步骤

我想在LCD上显示各颜色阈值,所以一开始使用draw_string函数进行编写代码,但是会出现Deprecated function, please use draw_string_advanced.Deprecated function, please use draw_string_advanced.Deprecated function, please use draw_string_advanced.Deprecated function, please use draw_string_advanced这样的问题,但是LCD上能显示文本,也就是能运行,如果我不用更新版本的硬件,想问一下,这个对实际功能会有什么影响吗;当我把draw_string函数换为draw_string_advanced函数时,出现了
find sensor gc2093_csi2, type 24, output 1920x1080@60
buffer pool : 4
sensor(0), mode 0, buffer_num 4, buffer_size 0
异常: function missing 3 required positional arguments
MPY: soft reboot
MicroPython v1.2 on 2024-11-28; k230_canmv_lckfb with K230
这样的问题,我的代码是

text_color = (255, 255, 255)  # 白色文字
        line_height = 40
        y_pos = 10
        src_img.draw_string_advanced(
            x=10,         # 必须为整数
            y=y_pos,      # 必须为整数
            s="Text",     # 字符串内容
            color=(255,255,255),  # 颜色元组
            scale=1,      # 缩放比例
            mono_space=False  # 是否等宽字体
        )
        # 显示颜色阈值
        src_img.draw_string_advanced(10, y_pos, f"Color: {color_threshold}", text_color, 2, False)
        y_pos += line_height
        src_img.draw_string_advanced(10, y_pos, f"Yellow: {yellow_threshold}", (255, 255, 0), 2, False)
        y_pos += line_height
        src_img.draw_string_advanced(10, y_pos, f"Red: {red_threshold}", (255, 0, 0), 2, False)
        y_pos += line_height
        src_img.draw_string_advanced(10, y_pos, f"Green: {green_threshold}", (0, 255, 0), 2, False)
        y_pos += line_height * 2
想问一下为什么会有这样的问题,其他位置都没变,是哪里有问题呢,是sensor类构造函数少传参数了吗,但是我其他位置都没变而且之前没报错,关于sensor我的代码是
SENSOR_ID = 2
BUFFER_NUM = 4
BUFFER_SIZE = 1920 * 1080 * 2
# 显示模式选择:可以是 "VIRT"、"LCD" 或 "HDMI"
DISPLAY_MODE = "LCD"

# 根据模式设置显示宽高
if DISPLAY_MODE == "VIRT":
    # 虚拟显示器模式
    DISPLAY_WIDTH = ALIGN_UP(1920, 16)
    DISPLAY_HEIGHT = 1080
elif DISPLAY_MODE == "LCD":
    # 3.1寸屏幕模式
    DISPLAY_WIDTH = 800
    DISPLAY_HEIGHT = 480
elif DISPLAY_MODE == "HDMI":
    # HDMI扩展板模式
    DISPLAY_WIDTH = 1920
    DISPLAY_HEIGHT = 1080
else:
    raise ValueError("未知的 DISPLAY_MODE,请选择 'VIRT', 'LCD' 或 'HDMI'")

# 初始化串口通讯
uart = UART(1, 115200)  # 使用UART1,波特率115200
sensor = Sensor(
    id=SENSOR_ID,
    width=1920,
    height=1080,
    chn=CAM_CHN_ID_0,
    buffer_num=BUFFER_NUM,
    buffer_size=BUFFER_SIZE,
    pixformat=Sensor.RGB565
)
try:
    # 构造一个具有默认配置的摄像头对象
#    sensor = Sensor(id=sensor_id, width=1920, height=1080)
    # 重置摄像头sensor
    sensor.reset()

    # 无需进行镜像和翻转
    # 设置不要水平镜像
    sensor.set_hmirror(False)
    # 设置不要垂直翻转
    sensor.set_vflip(False)

    sensor.set_framesize(width=picture_width, height=picture_height, chn=CAM_CHN_ID_0)
    # 设置通道0的输出像素格式为RGB565,要注意有些案例只支持GRAYSCALE格式
    sensor.set_pixformat(Sensor.RGB565, chn=CAM_CHN_ID_0)

    # 根据模式初始化显示器
    if DISPLAY_MODE == "VIRT":
        Display.init(Display.VIRT, width=DISPLAY_WIDTH, height=DISPLAY_HEIGHT, fps=60)
    elif DISPLAY_MODE == "LCD":
        Display.init(Display.ST7701, width=DISPLAY_WIDTH, height=DISPLAY_HEIGHT, to_ide=True)
    elif DISPLAY_MODE == "HDMI":
        Display.init(Display.LT9611, width=DISPLAY_WIDTH, height=DISPLAY_HEIGHT, to_ide=True)

    # 初始化媒体管理器
    MediaManager.init()
    # 启动传感器
    sensor.run()

    fps = time.clock()

求大佬解答问题原因以及如何修改代码
期待结果和实际结果

软硬件版本信息

错误日志

尝试解决过程

补充材料

1 Answers

draw_string还能用,是Image模块的原生方法,但是该方法不支持写中文。因此新增了draw_string_advanced方法,方法使用参考API文档,https://www.kendryte.com/k230_canmv/zh/main/zh/api/openmv/image.html#draw-string-advanced

写代码一定要注意参考文档!!!