type problem here, your img
struct has an int
data pointer
(4 bytes per pixel, not 2, that’s why every second CV_16U pixel is 00)
it should be either:
Mat m(Img.size[1], Img.size[0], CV_32S, Img.data);
(and the range be adjusted)
or ushort *data
in the Img struct