在c#中解码16位单通道png(统一)
我已经被困了一个星期,试图在Unity中解码16位1通道png。图像是字节数组的形式,需要对其进行解码才能访问各个像素值。该图像是深度图像,其中每个像素包含深度度量 我不能使用Unity的Texture2d.loadImage(),因为出于某种原因,它会自动将格式更改为RGBA24。我也看过opencv插件,但它不是免费的,因此不是一个选项。我既不能使用.NET framework中的System.Windows.Media.Imaging.PngBitmapDecoder,因为我的平台是Ubuntu 我没有.NETIDE,我使用统一开发的MonoDevelop在c#中解码16位单通道png(统一),c#,unity3d,compression,png,decode,C#,Unity3d,Compression,Png,Decode,我已经被困了一个星期,试图在Unity中解码16位1通道png。图像是字节数组的形式,需要对其进行解码才能访问各个像素值。该图像是深度图像,其中每个像素包含深度度量 我不能使用Unity的Texture2d.loadImage(),因为出于某种原因,它会自动将格式更改为RGBA24。我也看过opencv插件,但它不是免费的,因此不是一个选项。我既不能使用.NET framework中的System.Windows.Media.Imaging.PngBitmapDecoder,因为我的平台是Ubu
希望你们能帮忙!:) 您可以使用ImageMagick或GraphicsMagick将图像从PNG转换为PGM,然后从那里开始。PGM易于使用,只包含一个简单的标题,标题为“P2 width height maxval”,后跟从左上到右下的像素顺序:
# Make a 4x4 test image with 16-bit grayscale pixels
im7q16magick gradient:[4x4] -depth 16 g16.png
# Convert it to PGM format
im7q16magick g16.png -compress none g16.pgm
# Print it out
cat g16.pgm
P2
4 4
65535
65535 65535 65535 65535
49151 49151 49151 49151
32768 32768 32768 32768
16384 16384 16384 16384
问题是png图像有12个字节的垃圾,我必须在它们被移除之前移除它们。完成此操作后,Texture2d.loadImage()工作正常。所讨论的图像来自罗斯,作为通过统一中的罗斯布里奇利布传递的压缩图像信息。谢谢您的帮助:)您可以用