PIL не поддерживает многоканальные 16-битные / канальные изображения - см. документацию . Я бы посоветовал вам использовать OpenCV с флагом cv2.IMREAD_UNCHANGED
следующим образом:
import cv2
# Load image as 16-bits per channel, 4 channels
BGRA = cv2.imread('pnggrad16rgba.png', cv2.IMREAD_UNCHANGED)
# Check channels and depth
print(BGRA.dtype, BGRA.shape)
dtype('uint16')
(600, 600, 4)
Имейте в виду, что ваше изображение будет в BGRA
порядке, а не RGBA
, потому что OpenCV - это ... ну, OpenCV .
Если вам нужно, вы можете перейти от BGRA к RGBA, используя
RGBA = cv2.cvtColor(BGRA, cv2.COLOR_BGRA2RGBA)