问题描述
在机器视觉应用开发中,曝光控制是影响图像质量的关键因素。无论是低光环境下的清晰成像,还是高光场景下的细节保留,精准的曝光调节都能让视觉采集效果事半功倍。现在,CanMV K230 正式解锁手动调节曝光新技能,开发者可自由掌控摄像头曝光参数,适配更多个性化视觉开发需求!
一、功能亮点
- 精准可控:关闭自动曝光后,可自定义设置具体曝光时间(微秒级),从暗到亮灵活调节;
- 范围清晰:支持获取摄像头曝光时间范围,明确调节边界,避免参数超限;
- 即调即显:实时预览曝光参数调整后的成像效果,直观感受参数变化带来的画面差异;
二、核心操作解析
1.基础配置:初始化与模式选择
首先完成摄像头与显示器的基础初始化,支持VIRT(虚拟)、LCD(3.1寸屏)、HDMI三种显示模式,按需选择即可:
# 显示模式选择:"VIRT"、"LCD" 或 "HDMI"
DISPLAY_MODE = "LCD"
# 初始化显示器
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=2)
sensor.reset()
sensor.set_framesize(width=DISPLAY_WIDTH, height=DISPLAY_HEIGHT, chn=CAM_CHN_ID_0)
sensor.set_pixformat(Sensor.RGB888, chn=CAM_CHN_ID_0)
2.核心操作:手动曝光控制
关闭自动曝光:在传感器启动前关闭自动曝光,开启手动调节模式;
获取曝光范围:查询摄像头支持的曝光时间区间,作为调节参考;
设置自定义曝光值:按需设置具体曝光时间(单位:微秒),实时生效。
3.效果演示:多档位曝光体验
通过循环切换不同曝光值,直观感受曝光时间对画面亮度的影响(每个档位显示2秒):
# 测试不同曝光值(2ms/5ms/10ms/20ms/33ms)
test_exposures = [2000, 5000, 10000, 20000, 33000]
exposure_step = 0
frame_count = 0
while True:
img = sensor.snapshot(chn=CAM_CHN_ID_0)
Display.show_image(img)
# 每60帧(约2秒)切换一次曝光值
if frame_count % 60 == 0:
if exposure_step < len(test_exposures):
new_exp = test_exposures[exposure_step]
sensor.exposure(new_exp)
print(f"设置新曝光:{new_exp} us ({new_exp/1000:.1f} ms)")
exposure_step += 1
else:
exposure_step = 0
frame_count += 1
三、完整示例代码
参考SDK demo路径:
~/src/canmv/resources/examples/17-Sensor/camera_manual_exposure_lcd.py
四、使用提示
1、运行代码前需确保CanMV K230开发环境已配置完成,摄像头与显示设备连接正常;
2、曝光时间单位为微秒(us),1ms=1000us,设置时建议在摄像头支持的曝光范围内调整;
3、目前无法动态开关自动曝光功能,所以需要在sensor.run()之前关掉自动曝光功能,再进行手动调节
4、获取曝光调节范围和手动调节曝光需要在sensor.run()之后
总结
手动曝光功能的加入,让CanMV K230在机器视觉开发中更具灵活性。无论是工业检测、安防监控,还是创意视觉项目,开发者都可通过精准调节曝光参数,让图像采集效果更贴合场景需求。赶紧上手体验,解锁更多K230视觉开发新玩法吧!
参考文档:
https://www.kendryte.com/k230_canmv/zh/main/zh/example/media/sensor.html

