【发布时间】:2020-10-07 09:23:45
【问题描述】:
我正在使用 MagicLeap Headset 和 MLCamera API 来捕获输出为 YUV_420_888 的 rawvideocapture,我假设它是 YUV420P。 API 分别返回 yBuffer、uBuffer 和 vBuffer。我在没有位图的情况下在 c# 上组合这些通道时遇到了麻烦,因为我使用的是统一我使用的是 Mono。我想要做的是组合这些通道并将其发送到我的远程 python 服务器以处理我捕获的图像。要处理图像,它需要是完整的图像。我尝试只使用 Y 平面并创建灰度图像,但服务器无法处理它,所以我需要在客户端上组合所有 3 个通道,然后将其压缩为更可取的 jpeg,因为尺寸急剧减小并且我正在处理尽管相机输出为 1920x1080,但图像尺寸为 420x420。我在过去一周半尝试不同的方法,但找不到像样的东西。有几种方法特别适用于 Android,但如果我不需要,我不想将其转换为 NV21。我也看到了一个使用 ARCore 的,但我也不能使用那个,因为我使用的是 MagicLeap。
PS:延迟和处理时间非常重要,所以如果有办法直接将 YCbCr 转换为 jpeg 而无需将其转换为 RGB,我认为这会更好地帮助我的情况,但我不知道是否有可能。总的来说,我认为我缺乏一些阻碍我走得更远的基本知识。
非常感谢任何帮助!
【问题讨论】:
-
您是否尝试过使用 yuv 空间
Texture2D tex = new Texture2D(420, 420, TextureFormat.YUY2, false);创建纹理,然后使用ImageConversion.EncodeToJPG(Texture2D tex);将该纹理转换为 jpg? -
您好 Remy 感谢您的建议,我没有尝试过,因为我不确定如何将 YUV_420_888 转换为 YUY2。您认为它会比其他可能的解决方案更快吗?
标签: c# image unity3d client-server magic-leap