#码力全开·技术π对#CameraX的​​ImageAnalysis​​​用例处理YUV_420_888图像时,​​plane[0].pixelStr

问题​​:CameraX的​​ImageAnalysis​​​用例处理YUV_420_888图像时,​​plane[0].pixelStride​​​返回异常值(如负数)。如何正确解析?
​代码示例​

imageProxy.planes.forEach { plane ->
    Log.d("CameraX", "Stride: ${plane.pixelStride}")  // 输出-1
}

​期望​:是否需要手动计算Stride?或存在已知设备兼容性问题?

CameraX
Stride
最多选5个技能
2025-05-11 07:20:16
浏览
收藏 0
回答 1
已解决
回答 1
按赞同
/
按时间
mb68104f0991a40
mb68104f0991a40

手动计算 Stride 当检测到负值时,使用固定理论值:

kotlin

val yPixelStride = if (yPlane.pixelStride < 0) 1 else yPlane.pixelStride

val uvPixelStride = if (uPlane.pixelStride < 0) 2 else uPlane.pixelStride


设备黑名单 对已知问题设备强制使用手动计算:

kotlin

val useManualStride = listOf("samsung", "xiaomi").any {  

   Build.MANUFACTURER.lowercase().contains(it)  

}

注意内存对齐

处理 rowStride 中的填充字节,避免数据偏移。

验证方法

打印设备信息和 Stride 值,检查处理后的图像是否正常。

分享
微博
QQ
微信https://www.51cto.com/aigc/
回复
2025-05-12 14:42:30
发布
相关问题
提问