我无法打印此 array.The 应用程序停止工作 post 这一行
I am unable to print this array.The application stops working post this line
我必须将此 floatbuffer
打印为 array
并且文档中有一个函数,但该函数不起作用。我不明白我做错了什么?
我试过使用 floatBuffer.toString()
但它确实打印了 array
文档 (ARCore
) described.Thus 不正确的结果。
Camera camera = frame.getCamera();
CameraIntrinsics cameraIntrinsics=camera.getImageIntrinsics();
float[] focal=cameraIntrinsics.getFocalLength();
Log.e("Focals",Arrays.toString(focal));
int [] getDiminsions=cameraIntrinsics.getImageDimensions();
Log.e("Dimensions ", Arrays.toString(getDiminsions));
backgroundRenderer.draw(frame);
PointCloud pointCloud=frame.acquirePointCloud();
FloatBuffer floatBuffer=pointCloud.getPoints();
FloatBuffer readonly=floatBuffer.asReadOnlyBuffer();
//final boolean res=readonly.hasArray();
final float[] points=floatBuffer.array();
//what should I do
根据文档 (ARCore
) floatBuffer
中的每个点都有 4 个 values:x,y,z 坐标和一个置信度值。
根据 FloatBuffer 的实现,如果缓冲区没有数组支持,array()
方法可能不可用。如果您要做的只是遍历值,则可能不需要数组。
FloatBuffer floatBuffer = pointCloud.getPoints();
// Point cloud data is 4 floats per feature, {x,y,z,confidence}
for (int i = 0; i < floatBuffer.limit() / 4; i++) {
// feature point
float x = floatBuffer.get(i * 4);
float y = floatBuffer.get(i * 4 + 1);
float z = floatBuffer.get(i * 4 + 2);
float confidence = floatBuffer.get(i * 4 + 3);
// Do something with the the point cloud feature....
}
但如果确实需要使用数组,则需要调用 hasArray()
,如果不需要,则分配一个数组并复制数据。
FloatBuffer floatBuffer = pointCloud.getPoints().asReadOnlyBuffer();
float[] points;
if (floatBuffer.hasArray()) {
// Access the array backing the FloatBuffer
points = floatBuffer.array();
} else {
// allocate array and copy.
points = new float[floatBuffer.limit()];
floatBuffer.get(points);
}
我必须将此 floatbuffer
打印为 array
并且文档中有一个函数,但该函数不起作用。我不明白我做错了什么?
我试过使用 floatBuffer.toString()
但它确实打印了 array
文档 (ARCore
) described.Thus 不正确的结果。
Camera camera = frame.getCamera();
CameraIntrinsics cameraIntrinsics=camera.getImageIntrinsics();
float[] focal=cameraIntrinsics.getFocalLength();
Log.e("Focals",Arrays.toString(focal));
int [] getDiminsions=cameraIntrinsics.getImageDimensions();
Log.e("Dimensions ", Arrays.toString(getDiminsions));
backgroundRenderer.draw(frame);
PointCloud pointCloud=frame.acquirePointCloud();
FloatBuffer floatBuffer=pointCloud.getPoints();
FloatBuffer readonly=floatBuffer.asReadOnlyBuffer();
//final boolean res=readonly.hasArray();
final float[] points=floatBuffer.array();
//what should I do
根据文档 (ARCore
) floatBuffer
中的每个点都有 4 个 values:x,y,z 坐标和一个置信度值。
根据 FloatBuffer 的实现,如果缓冲区没有数组支持,array()
方法可能不可用。如果您要做的只是遍历值,则可能不需要数组。
FloatBuffer floatBuffer = pointCloud.getPoints();
// Point cloud data is 4 floats per feature, {x,y,z,confidence}
for (int i = 0; i < floatBuffer.limit() / 4; i++) {
// feature point
float x = floatBuffer.get(i * 4);
float y = floatBuffer.get(i * 4 + 1);
float z = floatBuffer.get(i * 4 + 2);
float confidence = floatBuffer.get(i * 4 + 3);
// Do something with the the point cloud feature....
}
但如果确实需要使用数组,则需要调用 hasArray()
,如果不需要,则分配一个数组并复制数据。
FloatBuffer floatBuffer = pointCloud.getPoints().asReadOnlyBuffer();
float[] points;
if (floatBuffer.hasArray()) {
// Access the array backing the FloatBuffer
points = floatBuffer.array();
} else {
// allocate array and copy.
points = new float[floatBuffer.limit()];
floatBuffer.get(points);
}