1
私は次のコードを持っています。私はKinect v1からpngファイルとして取得する16ビット深度の画像を保存しようとしています。私は次のコードサンプルを書いた:imwrite 16ビットPNG深度イメージ
def display_depth(dev, data, timestamp):
global keep_runningp
#cv2.imshow('Depth', frame_convert2.pretty_depth_cv(data))
cv2.imshow('Depth', frame_convert2.pretty_depth_cv(data))
print type(data)
print data.shape
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
私は8ビット符号なしnumpyの配列に16ビット符号なしのデータを変換し、次のコード、追加したときにそれが動作:この行がないと
depth = depth.astype(np.uint8)
を、私はちょうど空白/白のPNG画像全体を取得しています。しかし、私は16ビットのPNGファイルを持っている必要があります。
どうすれば16ビットのpngファイルとして保存できますか?私が作成した場合、私のデータの
に次の行を追加しましたa = np.random.randint(0、65536、size =(48、48、3)).stype(np.uint16) 'そして' cv2.imwrite( 'foo.png'、a) 'を実行すると、 16ビットのRGBファイル。代わりに 'a = np.random.randint(0、65535、size =(48、48)).stat(np.uint16)'を使うと、16ビットのグレースケール画像が得られます。言い換えれば、 'cv2.imwrite()'は私のために働きます。私はあなたを助けるために[最小、完全で検証可能な例](https://stackoverflow.com/help/mcve)が必要だと思います。 –
'frame_convert2.pretty_depth(data)'を保存しています。つまり、16ビットイメージではなく8ビットイメージを保存しています。 [関数の実装](https://github.com/OpenKinect/libfreenect/blob/master/wrappers/python/frame_convert2.py)を見れば、実際には 'depth = depth.astype(np.uint8) ' – api55
私は自分のカスタムframe_convertを実装し、それをインポートしていました。 – MIRMIX