Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 在Unity中获取Intel RealSense深度流_Unity3d_Textures_Intel_Depth_Realsense - Fatal编程技术网

Unity3d 在Unity中获取Intel RealSense深度流

Unity3d 在Unity中获取Intel RealSense深度流,unity3d,textures,intel,depth,realsense,Unity3d,Textures,Intel,Depth,Realsense,我目前正在尝试将新一代RealSense(D435,SDK2)的深度流作为Unity中的纹理2D。我可以通过WebCamTexture轻松访问常规RGB流,当我尝试获取depthsream时,出现以下错误: Could not connect pins - RenderStream() Unity识别depthcamera,但无法显示它 我还尝试使用Unity包装器的预置,但它们在我的项目中并不起作用。如果我使用预置,我可以得到数据的R16纹理。有人知道如何在图像的某个点获取深度信息吗(Get

我目前正在尝试将新一代RealSense(D435,SDK2)的深度流作为Unity中的纹理2D。我可以通过WebCamTexture轻松访问常规RGB流,当我尝试获取depthsream时,出现以下错误:

Could not connect pins - RenderStream()
Unity识别depthcamera,但无法显示它


我还尝试使用Unity包装器的预置,但它们在我的项目中并不起作用。如果我使用预置,我可以得到数据的R16纹理。有人知道如何在图像的某个点获取深度信息吗(GetPixel()不适用于R16纹理…)?我更喜欢获取WebCamTexture流,如果这不起作用,我必须以不同的方式保存信息…

获取深度数据的方法是创建我自己的类继承自RawImage。我使用自定义类作为深度渲染流的目标,并从类中的纹理组件获取图像

在我的例子中,我想将16位深度数据转换为8位pr通道rgb pgn,以便将其导出为灰度图像。下面是我如何解析图像数据的:

byte[] input = texture.GetRawTextureData();
        //create array of pixels from texture 
        //remember to convert to texture2D first
    Color[] pixels = new Color[width*height];

    //converts R16 bytes to PNG32
    for(int i = 0; i < input.Length; i+=2)
    {

        //combine bytes into 16bit number
        UInt16 num = System.BitConverter.ToUInt16(input, i);
        //turn into float with range 0->1
        float greyValue = (float)num / 2048.0f;

        alpha = 1.0f;

        //makes pixels outside measuring range invisible
        if (num >= 2048 || num <= 0)
            alpha = 0.0f;

        Color grey = new Color(greyValue, greyValue, greyValue, alpha);

            //set grey value of pixel based on float
        pixels.SetValue(grey, i/2);
    }
byte[]输入=纹理。GetRawTextureData();
//从纹理创建像素数组
//请记住先转换为texture2D
颜色[]像素=新颜色[宽度*高度];
//将R16字节转换为PNG32
对于(int i=0;i1范围内变为浮动
浮点灰色值=(浮点)num/2048.0f;
α=1.0f;
//使测量范围外的像素不可见

如果(num>=2048 | | num谢谢,这是一个非常棒的解决方案!我现在使用二维浮点数组,并在录制视频时将其保存到序列化列表中…对于实时解决方案,我只使用DepthTexture.GetDistance方法。您的解决方案非常棒,用于可视化深度信息!