使用hms arengine,sdk版本是2.13.0.4,在一个带有tof摄像机的设备上。
在尝试获取优化的深度图像时,我使用了getscenedepth()方法,它返回一个shortbuffer,我将其转换为bytearray并将其存储为jpg文件。
但是jpg文件无法打开,而getscenedepthwidth()和getscenedepthheight()方法返回正确的值,下面是代码:
int a = arFrame.acquireSceneMesh().getSceneDepthWidth();
int b = arFrame.acquireSceneMesh().getSceneDepthHeight();
Log.i(TAG, "WorldRenderManager: arFrame.acquireSceneMesh().getSceneDepthWidth()" + a + "");
Log.i(TAG, "WorldRenderManager: arFrame.acquireSceneMesh().getSceneDepthHeight()" + b + "");
ShortBuffer shortBuffer = arFrame.acquireSceneMesh().getSceneDepth();
ByteBuffer byteBuffer = ByteBuffer.allocate(shortBuffer.capacity() * 2);
byteBuffer.asShortBuffer().put(shortBuffer);
OutputStream fos = new FileOutputStream(depthimage.jpg);
byte[] bytes = new byte[byteBuffer.remaining()];
byteBuffer.get(bytes, 0, bytes.length);
BufferedOutputStream bos = new BufferedOutputStream(fos);
try {
bos.write(bytes);
bos.close();
} catch (FileNotFoundException e) {
Log.e(TAG, "FileNotFound");
} catch (IOException e) {
Log.e(TAG, "IOException");
}
我是否正确地转换了shortbuffer或者遗漏了什么?欢迎任何建议。
1条答案
按热度按时间xnifntxz1#
getscenedepth()方法将深度图像作为shortbuffer返回,不能直接以图片格式存储,可以先将图像存储为bin文件,然后使用python将其转换为jpg文件。更改fos的文件存储格式:
然后使用python进行转换并将其存储为jpg图片:
大田,现在你有了jpg格式的深度图像。