Convierta np.array de tipo float64 para escribir valores de escala uint8

Tengo un np.array particulardatos que representa una imagen particular en escala de grises. Necesito usar SimpleBlobDetector () que desafortunadamente solo acepta imágenes de 8 bits, por lo que necesito convertir esta imagen, obviamente teniendo una pérdida de calidad.

Ya he intentado:

import numpy as np
import cv2
[...]
data = data / data.max() #normalizes data in range 0 - 255
data = 255 * data
img = data.astype(np.uint8)
cv2.imshow("Window", img)

Perocv2.imshow no está dando la imagen como se esperaba, pero con una extraña distorsión ...

Al final, solo necesito convertir un np.float64 a np.uint8 escalando todos los valores y truncando el resto, por ejemplo. 65535 se convierte en 255, 65534 se convierte en 254 y así sucesivamente ... ¿Alguna ayuda?

Gracias.

Respuestas a la pregunta(2)

Su respuesta a la pregunta