You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Sony Spresense Camera Board通过Arduino库拍摄RAW图像异常求助

Sony Spresense相机板获取RGB565 RAW图像无文件输出的解决办法

问题根源

你修改图像格式参数后代码能正常运行,但SD卡没有生成文件,核心原因是原示例的文件保存逻辑仅适配JPG压缩格式。RGB565是未压缩的原始像素流,直接套用原JPG的保存逻辑无法生成有效文件。

具体修复步骤

  1. 修改文件扩展名
    不要再用.jpg作为后缀,换成.raw或.rgb565,方便后续识别文件格式:

    File rawFile = SD.open("/raw_image_001.raw", FILE_WRITE);
    
  2. 重写图像数据写入逻辑
    原代码仅处理JPG压缩数据块,RGB565需要直接写入相机返回的原始像素缓冲区。确保拿到数据后完整写入文件:

    // 按使用的分辨率分配缓冲区,比如320x240的RGB565需320*240*2=153600字节
    uint8_t img_buf[320*240*2];
    size_t img_size;
    
    if (cameraStillPictureGetData(img_buf, &img_size) == CAM_ERR_OK) {
      if (rawFile) {
        rawFile.write(img_buf, img_size);
        rawFile.close();
        Serial.println("RAW图像保存成功");
      }
    }
    

    注意:缓冲区大小必须匹配你设置的相机分辨率,比如1280x720的RGB565需要12807202=1843200字节的缓冲区。

  3. 验证格式切换是否生效
    加入验证代码,确认相机确实切换到了RGB565格式:

    uint32_t currentFmt = camera.getStillPictureImageFormat();
    Serial.print("当前图像格式: ");
    Serial.println(currentFmt); // 输出需等于CAM_IMAGE_PIX_FMT_RGB565的定义值
    
  4. 检查SD卡状态
    确认SD卡挂载正常、剩余空间充足——RGB565图像体积远大于JPG,比如1080P的RGB565文件约2.2MB,避免因空间不足导致写入失败。

额外提示

  • RGB565是16位像素格式,普通图片查看器无法直接打开,可通过Python脚本转换为PNG,或在Photoshop中通过「自定义格式」导入(设置为16位、RGB565排列)。
  • 如果需要传感器原生的Bayer RAW格式,需查阅Spresense官方文档,确认相机库是否支持CAM_IMAGE_PIX_FMT_RAW这类格式,部分RAW格式可能需要底层驱动的额外配置。

内容的提问来源于stack exchange,提问作者omar shamakhi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 03:16:16