Я думаю, что это правильно, но у меня нет RGB565 для проверки:
#!/usr/bin/env python3
import numpy as np
# Get some deterministic randomness and synthesize small image
np.random.seed(42)
im = np.random.randint(0,256,(1,4,3), dtype=np.uint8)
# In [67]: im
# Out[67]:
# array([[[102, 220, 225],
# [ 95, 179, 61],
# [234, 203, 92],
# [ 3, 98, 243]]], dtype=uint8)
# Make components of RGB565
R5 = (im[...,0]>>3).astype(np.uint16) << 11
G6 = (im[...,1]>>2).astype(np.uint16) << 5
B5 = (im[...,2]>>3).astype(np.uint16)
# Assemble components into RGB565 uint16 image
RGB565 = R5 | G6 | B5
# Produces this:
# array([[26364, 23943, 61003, 798]], dtype=uint16)
Или вы можете удалить cv2.cvtColor(show, cv2.COLOR_BGR2RGB)
и поменять индексы на:
R5 = (im[...,2]>>3).astype(np.uint16) << 11
G6 = (im[...,1]>>2).astype(np.uint16) << 5
B5 = (im[...,0]>>3).astype(np.uint16)