ARCore中ArFrame_acquireCameraImage返回绿色图像问题求助
ARCore相机YUV图像处理异常问题
问题背景
我通过ARCore的ArFrame_acquireCameraImage方法获取相机图像,已通过ArImage_getFormat验证图像为YUV_420_888格式,分辨率640x480。为区分是NV21还是YV12格式,我获取了U平面的像素步长。
我尝试两种处理方式:
- 用
memcpy将Y、U、V三个平面的数据合并为一个数组,通过J. Malinen的Base64编码函数输出到日志; - 使用RenderScript Intrinsics Replacement Toolkit进行YUV420p到RGBA的格式转换。
代码实现
LOGD("take frame"); ArImage *image = nullptr; if (mArSession != nullptr && mArFrame != nullptr && ArFrame_acquireCameraImage(mArSession, mArFrame, &image) == AR_SUCCESS) { const uint8_t *y; const uint8_t *u; const uint8_t *v; int planesCount = 0; ArImage_getNumberOfPlanes(mArSession, image, &planesCount); LOGD("%i", planesCount); int yLength, uLength, vLength; ArImage_getPlaneData(mArSession, image, 0, &y, &yLength); ArImage_getPlaneData(mArSession, image, 1, &u, &uLength); ArImage_getPlaneData(mArSession, image, 2, &v, &vLength); auto *yuv420 = new uint8_t[yLength + uLength + vLength]; memcpy(yuv420, y, yLength); memcpy(yuv420 + yLength, u, uLength); memcpy(yuv420 + yLength + uLength, v, vLength); int width, height, stride; ArImage_getWidth(mArSession, image, &width); ArImage_getHeight(mArSession, image, &height); ArImage_getPlanePixelStride(mArSession, image, 1, &stride); //auto *argb8888 = new uint8_t[width * height * 4]; renderscript::RenderScriptToolkit::YuvFormat format = renderscript::RenderScriptToolkit::YuvFormat::YV12; if(stride != 1) { format = renderscript::RenderScriptToolkit::YuvFormat::NV21; } LOGD("%i %i %i", width, height, format); /*renderscript::RenderScriptToolkit toolkit; toolkit.yuvToRgb(yuv420, argb8888, width, height, format);*/ LOGD("%s", base64_encode(yuv420, yLength + uLength + vLength).c_str()); // delete[](argb8888); delete[](yuv420); } if (image != nullptr) { ArImage_release(image); }
完整代码见项目cpp目录下的engine.cpp文件第232行。
测试环境
设备:小米Mi A3,同时在Android模拟器上测试出现相同问题。
异常现象
- 实际正常图像:室内场景,可见桌子、键盘等物品;
- 直接合并YUV后解码的图像:整体为绿色,顶部像素略浅,解码时使用NV21预设(半平面像素布局);
- YUV转ARGB后输出的图像:整体黑色,顶部有灰色像素,解码时使用RGB32预设,分辨率640x480,该图像的Base64内容有对应文本记录。
内容的提问来源于stack exchange,提问作者Vladislav
相关产品推荐
相关产品推荐

