在ARCore中获得不同分辨率图像的最佳方式



我正在开发一个Android应用程序,该应用程序使用ARCore(和Sceneform(,并为每个帧执行检测器,并为所选帧执行分类器。检测器需要相当低的分辨率帧(默认640x480 ARCore运动跟踪就足够了(,但分类器至少需要全高清。我尝试了两种选择:

  • arCoreSession.cameraConfig = config with 640x480 image res和1920x1080分辨率的附加ImageReader。它有效,但我怀疑ImageReader的框架只是从640x480放大的。这是正确的吗
  • CCD_ 2。ARCore创建3个曲面(gpu fhd、运动跟踪640x480和cpu 1920x1080(,frame.acquireLatestImage返回fhd帧。这种行为适用于分类器用例,但将fhd图像从yuv转换为rgb并调整大小到检测器的输入大小需要花费太多时间(比检测器推断更多(。是否可以在Sceneform onUpdate或ARCore的Frame对象中获取运动跟踪图像

在我的情况下,最佳做法是什么?

您可以使用renderscript将yuv转换为argb:https://github.com/android/renderscript-intrinsics-replacement-toolkit

获取相机图像(frame.acquisiteCameraImage(并将其传递给此脚本:https://github.com/android/renderscript-intrinsics-replacement-toolkit/blob/main/test-app/src/main/java/com/google/android/renderscript_test/IntrinsicYuvToRgb.kt

最新更新