cv2.VideoCapture
вернет numy массивы, поэтому если они 16-битные, у них должен быть тип данных np.uint16
.
В этом случае решение тривиально: сделайте то же самое, что и выразделить одно 16-битное значение.Numpy предоставляет векторизованную версию всех необходимых операторов.
Если входное изображение было уменьшено до 8-битной глубины, у вас останутся два 16-уровневых изображения.Чтобы получить два компонента, вам просто нужно немного изменить подход ...
Пример в консоли:
>>> a = np.ones((4,4),np.uint8) * 0x73
>>> a & 0xF
array([[3, 3, 3, 3],
[3, 3, 3, 3],
[3, 3, 3, 3],
[3, 3, 3, 3]], dtype=uint8)
>>> a >> 4
array([[7, 7, 7, 7],
[7, 7, 7, 7],
[7, 7, 7, 7],
[7, 7, 7, 7]], dtype=uint8)