Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

imwrite 16 bit png depth image

I have the following code. I am trying to save a 16 bit depth image which I retrieve from Kinect v1 as a png file. I wrote the following code sample:

def display_depth(dev, data, timestamp):
    global keep_runningp    
    cv2.imshow('Depth', frame_convert2.pretty_depth_cv(data))
    depthf.write(repr(timestamp)+" Depth/"+repr(timestamp)+".png\n")
    namef="Sample_dataset/Depth/"+repr(timestamp)+".png"    
    cv2.imwrite(namef,frame_convert2.pretty_depth(data))    
    if cv2.waitKey(10) == 27:          
        keep_running = False

It works when I add the following code, which converts data from a 16 bit unsigned to an 8 bit unsigned NumPy array:

depth = depth.astype(np.uint8)

Without this line, I am just getting the whole blank/white png image. But I need to have a 16 bit png file.

How I can save it as a 16 bit png file?

like image 397
MIRMIX Avatar asked Jun 17 '17 15:06

MIRMIX


1 Answers

Though type of my data was like this

<type 'numpy.uint16'>

Solution , to my problem was adding this line to my code

depth.astype(np.uint16)
like image 80
MIRMIX Avatar answered Oct 02 '22 23:10

MIRMIX