私は、3 つの RGB チャネルのそれぞれが uint16 (0-65536) としてエンコードされている顕微鏡からの画像を科学的に扱っています。現在、OpenCV2 と NumPy を使用して画像を処理しています。フラグ「cv2.IMREAD_UNCHANGED」を使用すると、読み取りですべて正常に動作し、画像に対して何らかの作業を行って uint16 に返すことができます。
img = cv2.imread('dummy.tif',cv2.IMREAD_UNCHANGED )
#do some work here
img = img.astype(numpy.uint16)
cv2.imwrite('processed.tif',img )
ただし、これまでのところ、処理された画像を 16 ビット RGB として再度保存する方法が見つからないようです。cv2.imwrite コマンドを使用すると、画像が uint8 に変換されるだけで、すべてが白くなります (つまり、すべてが uint8 チャネルの最大値である 255 に切り捨てられます)。
続行する方法はありますか?