这个问题通常是由于获取的图像格式与设备不兼容而导致的。一种解决方法是,在使用ArFrame_acquireCameraImage方法获取图像之前,先检查设备支持的图像格式。
下面是一个示例代码,用于检查设备支持的图像格式:
if (arcore::ImageMetadata metadata = frame.AcquireImageMetadata()) { if (metadata.GetSupportedFormatPlanes() < 1) { // 设备不支持 return false; } const ArSession* session = arcore::Session::GetNativeSession(env, ar_session_); ArImageFormat image_format; ArStatus status = ArSession_getSupportedCameraImageFormats(session, &image_format, 1); if (status != AR_SUCCESS || image_format != metadata.GetImageFormat()) { // 该格式与设备不兼容 return false; } }
如果该代码段返回false,则说明该设备不支持该图像格式,或者图像格式与设备不兼容。在这种情况下,可以考虑改变图像格式或使用不同的ARCore功能。