IMX335 设置2592分辨率

Viewed 88

问题描述


我用IMX335的相机模组。查看Sensor的API介绍,IMX335是支持2592x1944这个分辨率的。我因为项目需要,必须要用高分辨率的图片进行识别。
我在代码里面设置1920x1080是可以正常使用的,但是设置成2592x1944,直接报错。
报出的错误提示如下:
[错误] 摄像头初始化失败: sensor(0) chn(0) set_framesize invaild width(2592), should be 64 - 1920

复现步骤


    camera = Sensor(id=1)
    camera.reset()
    camera.set_framesize(width=2592, height=1944)        camera.set_pixformat(camera.RGB565)
    from media.media import MediaManager
    MediaManager.init()
    camera.run()

硬件板卡


幻尔

软件版本


CanMV_K230_Hiwonder_micropython_local_nncase_v2.9.0

直接看了底层的代码,最后到libvicap.a,这里看不了,这个代码是加密的,麻烦尽快给个答复

3 Answers
Sensor(id=1,width=2592, height=1944)

这个我尝试过的,虽然不报错了,但是相机实际上并没有正常工作,1、视频没有出现 2、拍照也不能用,object has no attribute 'snapshot'

1080P下能正常出图吗?

可以

def capture_image(category):
global good_count, bad_count

try:
    img = camera.snapshot()
        return True
    else:
        return False

except Exception as e:
    print(f"[错误] 拍照失败: {e}")
    return False

def main():
global PrintFlg, wdt
#使用软件定时器,编号-1
PrintFlg = False
tim = Timer(-1)
tim.init(mode=Timer.PERIODIC, period=3000, callback=fun) #周期为5分钟

init_directories()

print("✓ GPIO 初始化完成\n")

print("初始化摄像头...")
try:
    camera = Sensor(id=0, width=2592, height=1944)
    camera.reset()

    camera.set_framesize(width=2592, height=1944)
    camera.set_pixformat(camera.RGB565)

    from media.media import MediaManager
    MediaManager.init()
    camera.run()

except Exception as e:
    print(f"[错误] 摄像头初始化失败: {e}")
    return

# 每 3 秒自动喂狗
Timer(0,
      mode=Timer.PERIODIC,
      period=3000,
      callback=feed_watchdog)


last_press_time = 0
debounce_delay = 0.3  # 按键防抖延时

try:
    while True:

        if PrintFlg == True:


            for i in range(3):
                print(">>> 检测到合格品按键 <<<")
                capture_image("good")
                time.sleep(1)

            PrintFlg = False
            wdt.feed()

        time.sleep(0.01)

except KeyboardInterrupt:
    print("\n[提示] 检测到 Ctrl+C,程序退出\n")

except Exception as e:
    print(f"\n[错误] 程序异常: {e}\n")

finally:
    print("正在关闭摄像头...")
    try:

        camera.stop()
        from media.media import MediaManager

        MediaManager.deinit()
        print("✓ 摄像头已关闭")
    except:
        pass

img = camera.snapshot(),执行这句代码的时候报错了

#-----这个是示例代码,我用这个代码用1080P显示不了视频-----------#
print("camera_test")

# construct a Sensor object with default configure
sensor = Sensor(id=0)
# sensor reset
sensor.reset()
# set hmirror
# sensor.set_hmirror(False)
# sensor vflip
# sensor.set_vflip(False)

# set chn0 output size, 800x480
sensor.set_framesize(width = 1920, height = 1080)
# set chn0 output format
sensor.set_pixformat(Sensor.RGB565)
# bind sensor chn0 to display layer video 1
bind_info = sensor.bind_info()
Display.bind_layer(**bind_info, layer = Display.LAYER_VIDEO1)

# use lcd as display output
Display.init(Display.ST7701, width = 800, height = 480, to_ide = True)


# sensor start run
sensor.run()

#-------这个使用pipeline,用1080可以显示视频,但是用2592就报错----#
PipeLine(rgb888p_size=[1920,1080], display_mode='hdmi')

这个屏幕就800x480啊,显示不了更大的图片

我把屏幕改成1080P也显示不了啊

怎么改的?