单目相机清晰度怎么改

小车上的单目相机的清晰度最大能调到多少,怎么能调一下,我们现在的图像很糊,离得远码都扫不出来

根据你的问题,我来帮你分析单目相机清晰度调整的方案:

:pushpin: 核心结论

单目相机清晰度主要受三个因素影响:

  1. 分辨率设置 - 决定图像像素数量
  2. 曝光参数 - 影响图像亮度和噪点
  3. 对焦距离 - 物理镜头对焦是否准确

从你提供的图片看,图像整体偏暗且模糊,优先调整曝光参数。


:wrench: 解决方案

方案一:调整曝光参数(推荐优先尝试)

参考社区类似案例 [33649],自动曝光模式下图像偏暗是常见问题:

步骤:

  1. 查看当前相机配置
# 查看相机当前运行参数
cat /sys/kernel/debug/isp/log | grep -i "AE LOG"
  1. 修改 tuning 配置文件
# 找到相机对应的 tuning 文件(通常在 /app/camera_configs/ 目录下)
# 编辑 tuning.json 文件,调整曝光相关参数:
{
  "ae": {
    "target_luma": 128,  // 提高目标亮度值(默认可能是 100-120)
    "max_integration_time": 33000,  // 最大曝光时间(单位微秒)
    "max_gain": 4096  // 最大增益值
  }
}
  1. 重启相机服务
# 重启相机节点
killall camera_node
# 或重新运行启动脚本
/app/camera_configs/your_camera/start_camera.sh

方案二:检查分辨率设置

确认当前分辨率:

# 查看相机支持的分辨率
v4l2-ctl --device=/dev/video0 --list-formats-ext

修改分辨率(如需要):

# 在相机启动脚本或 ROS launch 文件中修改
# 示例:设置为 1920x1080
v4l2-ctl --device=/dev/video0 --set-fmt-video=width=1920,height=1080

️ 注意:RDK X5 默认相机分辨率可能是 960x540 或 1280x720,过高分辨率会影响帧率。

方案三:使用 VTunerClient 调试(需要 NDA 授权)

如果你有 NDA 授权,可以使用官方 tuning 工具:

# 板端启动 tuning server
cd /path/to/tuning_tool
sh run_tuning.sh --tune 1

# PC 端使用 VTunerClient 连接
# 调整 AE(自动曝光)、AWB(白平衡)、Sharpness(锐度)等参数

参考帖子:[34044]


:bullseye: 快速排查清单

检查项 命令/操作 预期结果
相机分辨率 v4l2-ctl --all ≥1280x720
曝光时间 查看 tuning 文件 10000-30000μs
增益值 查看 tuning 文件 ≤4096
镜头对焦 手动旋转镜头 近处物体清晰
环境光照 - ≥300 lux

:light_bulb: 优化建议

  1. 如果是扫码应用:

    • 建议分辨率:1280x720 或 1920x1080
    • 曝光时间:15000-25000μs
    • 关闭自动曝光,使用固定参数
  2. 如果环境光线不足:

    • 增加补光灯
    • 提高 gain 值(但会增加噪点)
    • 降低曝光时间要求(接受稍暗图像)
  3. 代码中获取曝光参数(参考 [33700]):

// 在驱动中添加日志打印曝光值
// 或通过 logcat 查看
logcat | grep -i "AE LOG"

需要更多信息

为了给你更精准的建议,请补充:

  1. 相机型号:是 RDK X5 自带相机还是第三方 MIPI 相机?
  2. 当前分辨率:运行 v4l2-ctl --all 查看
  3. 使用场景:扫码距离大概多远?(1 米?3 米?)
  4. SDK 版本:运行 cat /etc/version 查看

建议先尝试方案一调整曝光参数,这是最常见的问题点。如果还有问题,欢迎提供更多信息继续交流!

:books: 相关资源:

1、相机是origincar套件上的单目相机
2、root@ubuntu:~/ros2_ws# v4l2-ctl --all
Driver Info:
Driver name : uvcvideo
Card type : USB 2.0 Camera
Bus info : usb-xhci-hcd.2.auto-1.3
Driver version : 6.1.83
Capabilities : 0x84a00001
Video Capture
Metadata Capture
Streaming
Extended Pix Format
Device Capabilities
Device Caps : 0x04200001
Video Capture
Streaming
Extended Pix Format
Media Driver Info:
Driver name : uvcvideo
Model : USB 2.0 Camera
Serial :
Bus info : usb-xhci-hcd.2.auto-1.3
Media version : 6.1.83
Hardware revision: 0x00000000 (0)
Driver version : 6.1.83
Interface Info:
ID : 0x03000002
Type : V4L Video
Entity Info:
ID : 0x00000001 (1)
Name : USB 2.0 Camera
Function : V4L2 I/O
Flags : default
Pad 0x01000007 : 0: Sink
Link 0x02000013: from remote pad 0x100000a of entity ‘Processing 2’ (Video Pixel Formatter): Data, Enabled, Immutable
Priority: 2
Video input : 0 (Input 1: ok)
Format Video Capture:
Width/Height : 1280/720
Pixel Format : ‘MJPG’ (Motion-JPEG)
Field : None
Bytes per Line : 0
Size Image : 921600
Colorspace : sRGB
Transfer Function : Rec. 709
YCbCr/HSV Encoding: ITU-R 601
Quantization : Default (maps to Full Range)
Flags :
Crop Capability Video Capture:
Bounds : Left 0, Top 0, Width 1280, Height 720
Default : Left 0, Top 0, Width 1280, Height 720
Pixel Aspect: 1/1
Selection Video Capture: crop_default, Left 0, Top 0, Width 1280, Height 720, Flags:
Selection Video Capture: crop_bounds, Left 0, Top 0, Width 1280, Height 720, Flags:
Streaming Parameters Video Capture:
Capabilities : timeperframe
Frames per second: 20.000 (20/1)
Read buffers : 0

User Controls

                 brightness 0x00980900 (int)    : min=-512 max=511 step=1 default=0 value=50
                   contrast 0x00980901 (int)    : min=0 max=255 step=1 default=140 value=140
                 saturation 0x00980902 (int)    : min=0 max=255 step=1 default=138 value=138
                        hue 0x00980903 (int)    : min=-180 max=180 step=1 default=0 value=0
    white_balance_automatic 0x0098090c (bool)   : default=1 value=1
                      gamma 0x00980910 (int)    : min=30 max=140 step=5 default=40 value=40
                       gain 0x00980913 (int)    : min=0 max=63 step=1 default=0 value=0
       power_line_frequency 0x00980918 (menu)   : min=0 max=2 default=1 value=1 (50 Hz)
                            0: Disabled
                            1: 50 Hz
                            2: 60 Hz
  white_balance_temperature 0x0098091a (int)    : min=2500 max=9500 step=1 default=5000 value=4150 flags=inactive
                  sharpness 0x0098091b (int)    : min=0 max=15 step=1 default=6 value=6
     backlight_compensation 0x0098091c (int)    : min=0 max=2 step=1 default=1 value=1

Camera Controls

              auto_exposure 0x009a0901 (menu)   : min=0 max=3 default=3 value=3 (Aperture Priority Mode)
                            1: Manual Mode
                            3: Aperture Priority Mode
     exposure_time_absolute 0x009a0902 (int)    : min=78 max=2500 step=1 default=312 value=34 flags=inactive
 exposure_dynamic_framerate 0x009a0903 (bool)   : default=0 value=1
               pan_absolute 0x009a0908 (int)    : min=-288000 max=288000 step=3600 default=0 value=0
              tilt_absolute 0x009a0909 (int)    : min=-216000 max=216000 step=3600 default=0 value=0
             focus_absolute 0x009a090a (int)    : min=2048 max=8192 step=1 default=4096 value=4096 flags=inactive
 focus_automatic_continuous 0x009a090c (bool)   : default=1 value=1
              zoom_absolute 0x009a090d (int)    : min=2 max=15 step=1 default=2 value=2

3、按照建议,改了一下分辨率,现在的扫码距离是1.3m左右,但是还是没有达到要求,实际需要的扫码距离为2.5m左右
4、3.1.0

:pushpin: 核心结论

根据你的配置信息(Origincar USB 2.0 相机 + 1280x720 @ 20fps),2.5m 扫码距离已接近硬件极限。USB 2.0 相机 + 720p 分辨率在 1.3m 可用,但 2.5m 需要优化参数 + 可能更换硬件。


:wrench: 立即执行的优化方案

方案一:调整曝光参数(最关键)

从你的 v4l2-ctl 输出看,曝光值只有 34(范围 78-2500),这是图像偏暗的主要原因:

# 1. 切换到手动曝光模式
v4l2-ctl --device=/dev/video0 -c auto_exposure=1

# 2. 提高曝光时间(从 34 提高到 800-1200)
v4l2-ctl --device=/dev/video0 -c exposure_time_absolute=1000

# 3. 提高增益(从 0 提高到 20-30)
v4l2-ctl --device=/dev/video0 -c gain=25

# 4. 提高锐度(从 6 提高到 10-12)
v4l2-ctl --device=/dev/video0 -c sharpness=12

# 5. 关闭自动对焦,手动调整对焦环
v4l2-ctl --device=/dev/video0 -c focus_automatic_continuous=0
v4l2-ctl --device=/dev/video0 -c focus_absolute=4096  # 先保持默认,然后手动旋转镜头

测试效果后,将参数写入启动脚本:

# 在你的相机启动脚本中添加上述命令
# 位置:/app/camera_configs/origincar/start_camera.sh 或类似文件

方案二:检查更高分辨率支持

# 查看相机支持的所有分辨率
v4l2-ctl --device=/dev/video0 --list-formats-ext

# 如果支持 1920x1080,尝试切换
v4l2-ctl --device=/dev/video0 --set-fmt-video=width=1920,height=1080,pixelformat=MJPG

:warning: 注意:USB 2.0 带宽限制,1080p 可能只能达到 10-15fps,需要权衡。


方案三:手动对焦优化(关键)

自动对焦在扫码场景往往不准,需要手动调整:

  1. 关闭自动对焦(上面已执行)
  2. 在 2.5m 处放置二维码
  3. 手动旋转相机镜头,直到二维码最清晰
  4. 记录对焦值(通过 v4l2-ctl --all | grep focus 查看)
  5. 将固定对焦值写入启动脚本

:bullseye: 扫码距离提升的硬件限制

配置 1.3m 2.5m 建议
1280x720 + USB 2.0 :white_check_mark: 可用 :warning: 极限 优化曝光 + 手动对焦
1920x1080 + USB 2.0 :white_check_mark: 可用 ️ 勉强 帧率会降到 10-15fps
1920x1080 + USB 3.0 :white_check_mark: 可用 :white_check_mark: 推荐 建议更换 USB 3.0 相机

2.5m 扫码的硬性要求:

  • 二维码尺寸 ≥ 5cm × 5cm
  • 分辨率 ≥ 1920x1080
  • 镜头焦距 ≥ 4mm(广角镜头扫码距离短)

扫码算法优化建议

如果硬件无法更换,从算法侧优化:

# 在扫码代码中添加图像预处理
import cv2

def preprocess_for_qr(image):
    # 1. 提高对比度
    clahe = cv2.createCLAHE(clipLimit=3.0, tileGridSize=(8,8))
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    enhanced = clahe.apply(gray)
    
    # 2. 锐化
    kernel = np.array([[-1,-1,-1], [-1,9,-1], [-1,-1,-1]])
    sharpened = cv2.filter2D(enhanced, -1, kernel)
    
    # 3. 降噪
    denoised = cv2.fastNlMeansDenoising(sharpened, None, 10, 7, 21)
    
    return denoised

:clipboard: 完整测试流程

# 1. 应用优化参数
v4l2-ctl --device=/dev/video0 -c auto_exposure=1
v4l2-ctl --device=/dev/video0 -c exposure_time_absolute=1000
v4l2-ctl --device=/dev/video0 -c gain=25
v4l2-ctl --device=/dev/video0 -c sharpness=12
v4l2-ctl --device=/dev/video0 -c focus_automatic_continuous=0

# 2. 查看当前参数
v4l2-ctl --device=/dev/video0 --all | grep -E "exposure|gain|sharpness|focus"

# 3. 测试扫码效果
# 在 2.5m 处放置标准二维码(建议 10cm×10cm)
# 运行你的扫码程序测试

# 4. 如果效果仍不佳,逐步提高曝光值(每次 +200)
v4l2-ctl --device=/dev/video0 -c exposure_time_absolute=1200
# 测试 -> 1400 -> 测试 -> 直到图像亮度合适但不过曝

:police_car_light: 最终建议

如果上述优化后 2.5m 扫码仍不稳定,建议:

  1. 更换 USB 3.0 工业相机(如海康 MV-CS050-10UC,500 万像素)
  2. 选择焦距更长的镜头(6mm 或 8mm,而非广角)
  3. 增加补光灯(提高环境照度)

社区有类似案例参考:


需要确认

  1. 你的二维码尺寸是多少?(2.5m 距离建议 ≥ 8cm)
  2. 环境光照条件如何?(室内/室外?有无补光?)
  3. 扫码帧率要求?(如果允许降低帧率,可尝试 1080p)

先执行上面的曝光参数调整,测试后反馈效果!

可以看一下这个功能包,清晰度最高能支持到1920×1080,只要改一下对应的launch文件就行