庐山派自动调焦的摄像头无法自动调焦距问题

Viewed 26

问题描述


我想了解一下,庐山派自动调焦的摄像头,我搞了2个板子,2个LCKFB-GC2093-200W-MIPI-AF-V1,可是都无法自动调焦。我板子用的固件是CanMV_K230_LCKFB_micropython_v1.8-51-gb321102_nncase_v2.11.0,是哪有问题么,我用的就是camera_auto_focus_lcd.py

复现步骤


使用camera_auto_focus_lcd.py代码,然后就是2块都是一样不行,但我用手扣拉摄像头是可以发现焦距变化的。

硬件板卡


庐山派

软件版本


CanMV_K230_LCKFB_micropython_v1.8-51-gb321102_nncase_v2.11.0

其他信息


46b1fd56173422194bc7512ce5b3d6ba_720.jpg

1 Answers

你好,可以贴一下脚本运行的日志吗?

使用CanMV_K230_LCKFB_micropython_v1.8-63-gc6dd8be_nncase_v2.11.0,已修复,谢谢

我为了确保自动对焦开启还添加了代码
sensor.set_framesize(width=DISPLAY_WIDTH, height=DISPLAY_HEIGHT, chn=CAM_CHN_ID_0)
sensor.set_pixformat(Sensor.RGB888, chn=CAM_CHN_ID_0)
sensor.auto_focus(True)

(可选)查询传感器对焦能力,确认硬件是否支持

focus_caps = sensor.auto_focus()
print("开启后对焦状态:", focus_caps) # 返回True,确认开启成功

调试返回
find sensor gc2093_csi2, type 33, output 1920x1080@60
开启后对焦状态: True
deprecated function
sensor(0), mode 0, buffer_num 4, buffer_size 0
当前对焦位置: 0
当前对焦位置: 0

把添加的代码删除后,按例子调试,无法调焦。
代码如下:
import time, os, sys

from media.sensor import *
from media.display import *
from media.media import *

sensor_id = 2
sensor = None

显示模式选择:可以是 "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'")

根据模式初始化显示器

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)

构造一个具有默认配置的摄像头对象

sensor = Sensor(id=sensor_id)

重置摄像头sensor

sensor.reset()

设置水平镜像

sensor.set_hmirror(False)

设置垂直翻转

sensor.set_vflip(False)

sensor.set_framesize(width=DISPLAY_WIDTH, height=DISPLAY_HEIGHT, chn=CAM_CHN_ID_0)
sensor.set_pixformat(Sensor.RGB888, chn=CAM_CHN_ID_0)
sensor.auto_focus(True)

初始化媒体管理器

MediaManager.init()

启动传感器

sensor.run()

while True:
os.exitpoint()

# 捕获通道0的图像
img = sensor.snapshot(chn=CAM_CHN_ID_0)
# 显示捕获的图像
Display.show_image(img)

current_focus_pos = sensor.focus_pos()
print("当前对焦位置:", current_focus_pos)

sensor stop run

if isinstance(sensor, Sensor):
sensor.stop()

deinit display

Display.deinit()
os.exitpoint(os.EXITPOINT_ENABLE_SLEEP)
time.sleep_ms(100)

release media buffer

MediaManager.deinit()

结果如下:

▶ 监视中
视图模式

文本
来源

CanMV USBDBG
保存日志
清空

MPY: soft reboot
CanMV v1.8-51-gb321102(based on Micropython e00a144) on 2026-09-18; k230_canmv_lckfb with K230
Type "help()" for more information.

find sensor gc2093_csi2, type 33, output 1920x1080@60
deprecated function
sensor(0), mode 0, buffer_num 4, buffer_size 0
当前对焦位置: 0
当前对焦位置: 0
当前对焦位置: 0
当前对焦位置: 0
当前对焦位置: 0
当前对焦位置: 0
当前对焦位置: 0
当前对焦位置: 0
当前对焦位置: 0
当前对焦位置: 0
当前对焦位置: 0
当前对焦位置: 0
当前对焦位置: 0
当前对焦位置: 0
当前对焦位置: 0
当前对焦位置: 0
当前对焦位置: 0
当前对焦位置: 0
当前对焦位置: 0
当前对焦位置: 0
当前对焦位置: 0
当前对焦位置: 0
当前对焦位置: 0
当前对焦位置: 0
当前对焦位置: 0
当前对焦位置: 0
当前对焦位置: 0
当前对焦位置: 0
当前对焦位置: 0
当前对焦位置: 0
当前对焦位置: 0
当前对焦位置: 0
当前对焦位置: 0
当前对焦位置: 0
当前对焦位置: 0
当前对焦位置: 0
当前对焦位置: 0
当前对焦位置: 0
Traceback (most recent call last):
File "", line 60, in
File "media/sensor.py", line 1, in snapshot
Exception: IDE interrupt