Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.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
C# 读取16位灰度TIFF文件的像素值(但仅前12位)_C#_Tiff - Fatal编程技术网

C# 读取16位灰度TIFF文件的像素值(但仅前12位)

C# 读取16位灰度TIFF文件的像素值(但仅前12位),c#,tiff,C#,Tiff,我正在使用12位单色照相机。它可以做8位,但我需要额外的数据位来进行某些像素的计算。因此,我使用相机生成一个16位灰度TIFF文件(这是获得我所需的12位数据的唯一方法) 每个像素(每个制造商)的内容为: 1111111111xxxx-白色 00000000 0000XXXX-黑色 其中X是随机的(同样根据制造商) 该文件看起来不像最后4位是随机的,但那是另一回事(不合主题) 我试图做的是打开该文件,读取给定像素(比如X,Y)的像素值(前12位) 我在网上查了一下,但我能找到的都是能读懂全部16

我正在使用12位单色照相机。它可以做8位,但我需要额外的数据位来进行某些像素的计算。因此,我使用相机生成一个16位灰度TIFF文件(这是获得我所需的12位数据的唯一方法)

每个像素(每个制造商)的内容为: 1111111111xxxx-白色 00000000 0000XXXX-黑色

其中X是随机的(同样根据制造商)

该文件看起来不像最后4位是随机的,但那是另一回事(不合主题)

我试图做的是打开该文件,读取给定像素(比如X,Y)的像素值(前12位)

我在网上查了一下,但我能找到的都是能读懂全部16位的项目


编辑:我能够直接读取相机缓冲区,这使我能够访问整个16位。我最终得到一个UInt16,需要将其转换为12位数字。

无法直接从文件中读取部分字节。你需要读取你想要的每个像素,然后去掉最后4位。例如

inti;//图像中的一些像素
int pixel=i>>4;//像素>0表示白色


这使用位移位来去除底部的4位。

谢谢。。我的像素值属于UInt16类型。PixelValue=NewValue>>4不起作用。我不确定我遗漏了什么。根据我的说法,你只需要将移位值转换为UInt16<代码>ushort pixelFromImage=/*从图像获取*/;ushort像素=(ushort)(pixelFromImage>>4)