Я использую Kinect 4 Azure SDK с оболочкой Python K4A. Тип d для глубины равен uint16. Это работает на Linux, но не на Windows. В Windows полученное изображение выглядит как псевдоним. Один пиксель из двух черный.
Что может заставить этот код вести себя по-разному в Linux и Windows?
Это соответствующий код в оболочке:
uint8_t* buffer = k4a_image_get_buffer(depth_image);
npy_intp dims[2];
dims[0] = k4a_image_get_height_pixels(depth_image);
dims[1] = k4a_image_get_width_pixels(depth_image);
PyArrayObject* np_depth_image = (PyArrayObject*)
PyArray_SimpleNewFromData(2, (npy_intp*) dims, NPY_UINT16, buffer);
return PyArray_Return(np_depth_image);
https://github.com/etiennedub/pyk4a/blob/master/pyk4a/pyk4a.cpp#L161
Я попытался изменить первую строку, как мы видим в kinect 4 azure sdk
uint16_t* buffer = (uint16_t*)(void*) k4a_image_get_buffer(depth_image);
https://github.com/microsoft/Azure-Kinect-Sensor-SDK/blob/82b850ba3c6c5fcebb3e74679896546029379dc5/examples/undistort/main.cpp#L237
Возможно, это можно решить с помощью битового сдвига илипохоже, но я бы предпочел понять, почему поведение в Windows отличается.
Есть идеи?