I have a 12 bit packed image from a GigE camera. It is a little-endian file and each 3 bytes hold 2 12-bit pixels.
I am trying to read this image using python and I tried something like this:
with open('12bitpacked1.bin', 'rb') as f:
data = f.read()
ic = 0
for oo in range(0,len(data)/3):
aa = bitstring.Bits(bytes=data[oo:oo+3], length=24)
ii[ic],ii[ic+1] = aa.unpack('uint:12,uint:12')
b = numpy.reshape(ii,(484,644))
In short: I read 3 bytes, convert them to bits and then unpack them as two 12-bit integers.
The result is, however, very different from what it should be. It looks like the image is separated into four quarters, each of them expanded to full image size and then overlapped.
What am I doing wrong here?
Update: Here are the test files:
They will not be identical, but they should show the same image. 12-bit normal has 12-bit pixel as uint16.
with open('12bit1.bin', 'rb') as f:
a = numpy.fromfile(f, dtype=numpy.uint16)
b = numpy.reshape(a,(484,644))