HarmonyOS 鸿蒙Next AR Engine中图片坐标转屏幕坐标

发布于 1周前 作者 vueper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next AR Engine中图片坐标转屏幕坐标

我想知道在ar engine中通过
arFrame.acquireCameraImage()

获得了图片,现在我知道图片上的一些坐标点,怎么转为对应的屏幕坐标呢?

ARCore:

我在google的arcore中可以通过以下方法实现:

/
* Transforms a list of 2D coordinates from one 2D coordinate system to another 2D coordinate
* system.

* <p>Same as {@link
* #transformCoordinates2d(com.google.ar.core.Coordinates2d,java.nio.FloatBuffer,com.google.ar.core.Coordinates2d,java.nio.FloatBuffer)},
* but taking float arrays.

* @param inputCoordinates The coordinate system used by {@code inputVertices2d}.
* @param inputVertices2d Input 2D vertices to transform.
* @param outputCoordinates The coordinate system to convert to.
* @param outputVertices2d Buffer to put the transformed 2D vertices into.
/
public void transformCoordinates2d(
com.google.ar.core.Coordinates2d inputCoordinates,
float[] inputVertices2d,
com.google.ar.core.Coordinates2d outputCoordinates,
float[] outputVertices2d) {
// Method contents removed.
}

该方法可以在以下类型的坐标中进行转换:

public enum Coordinates2d {
/
CPU image, (x,y) normalized to [0.0f, 1.0f] range. /
IMAGE_NORMALIZED,
/
CPU image, (x,y) in pixels. */
IMAGE_PIXELS,
/

* OpenGL Normalized Device Coordinates, display-rotated, (x,y) normalized to [-1.0f, 1.0f] range.
/
OPENGL_NORMALIZED_DEVICE_COORDINATES,
/
* GPU texture coordinates, (s,t) normalized to [0.0f, 1.0f] range. /
TEXTURE_NORMALIZED,
/
* GPU texture, (x,y) in pixels. /
TEXTURE_TEXELS,
/
* Android view, display-rotated, (x,y) in pixels. /
VIEW,
/
* Android view, display-rotated, (x,y) normalized to [0.0f, 1.0f] range. */
VIEW_NORMALIZED;
}

所以可以很轻松地进行任意的坐标转换,比如cameraImage坐标转屏幕坐标,cameraImage坐标转depthImage坐标…

我想知道华为ar engine如何完成这件事呢?

arFrame.transformDisplayUvCoords 这个方法貌似不奏效


更多关于HarmonyOS 鸿蒙Next AR Engine中图片坐标转屏幕坐标的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

楼主你开发的是安卓应用还是NEXT应用啊?

更多关于HarmonyOS 鸿蒙Next AR Engine中图片坐标转屏幕坐标的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next AR Engine中,图片坐标转屏幕坐标的过程通常涉及将增强现实(AR)空间中的图像坐标映射到设备的显示屏幕坐标系。这通常通过以下步骤实现:

  1. 获取AR坐标系信息:首先,通过AR Engine的API获取当前图像在AR空间中的坐标,这通常包括图像的二维中心点坐标(x, y)以及可能的其他相关信息,如旋转角度和缩放比例。

  2. 应用投影矩阵:使用AR Engine提供的投影矩阵,将AR坐标转换为设备屏幕的像素坐标。投影矩阵考虑了设备的相机参数、屏幕尺寸、分辨率等,确保坐标转换的准确性。

  3. 屏幕坐标计算:应用投影矩阵后,得到的坐标即为图片中心点在屏幕上的像素坐标。如果图片有特定的尺寸或需要计算其他点的屏幕坐标,还需根据图片的宽高比和中心点坐标进行相应的计算。

  4. 考虑屏幕方向:确保转换过程中考虑了设备的屏幕方向(如横屏或竖屏),以正确映射坐标。

最终,通过上述步骤,可以将AR Engine中的图片坐标成功转换为屏幕坐标。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部