我使用的是一台12位黑白相机。它可以做8位,但我需要额外的数据位来计算某些像素。所以我用相机生成了一个16位灰度的TIFF文件(这是获取我需要的12位数据的唯一方法)。
每个像素的内容(每个厂家)是: 11111111 1111XXXX -白色00000000 0000XXXX -黑色
其中X是随机的(同样是每个制造商)。
文件看起来不像最后4位是随机的,但这是另一回事(脱离主题)。
我要做的是打开这个文件,读取给定像素(比如X,Y)的像素值(前12位)。
我在网上看了看,但我能找到的都是能读懂全部16位的项目……
编辑:我能够直接读取相机缓冲区,这让我可以访问整个16位。我最终得到了一个UInt16,我需要将它转换成一个12位的数字。
发布于 2014-06-19 09:01:30
无法直接从文件中读取部分字节。你需要读取你想要的每个像素,然后去掉最后4位。例如。
int i; // some pixel from the image int pixel = i >> 4; // pixel > 0 for white
这使用位移位来去掉底部的4位。
https://stackoverflow.com/questions/24297022
复制相似问题