我正在使用12位单色相机。它可以做8位但我需要额外的数据位用于某些像素周围的计算。所以我使用相机生成一个16位灰度TIFF文件(获取我需要的12位数据的唯一方法)。
每个像素(每个制造商)的内容是: 11111111 1111XXXX - 白色 00000000 0000XXXX - 黑色
其中X是随机的(同样是每个制造商)。
该文件看起来好像最后4位是随机的,但这是另一种问题(超出主题)。
我要做的是打开该文件,读取给定像素的像素值(前12位)(比如X,Y)。
我在线查看,但我能找到的所有项目都会读取所有16位......
编辑:我能够直接读取相机缓冲区,这使我可以访问整个16位。我最终得到了一个UInt16,我需要将其转换为12位数字。
答案 0 :(得分:2)
无法直接从文件中读取部分字节。你需要读取你想要的每个像素,然后摆脱最后4位。 E.g。
int i; // some pixel from the image
int pixel = i >> 4; // pixel > 0 for white
这使用位移来消除最后4位。