попробуй cv2.imshow("", y.astype('float32'))
или cv2.imshow("", y.astype('uint8') * 255)
CV_64F означает, что числовой массив 'dtype' является 64-битной плавающей точкой
opencv работает только с 'float32' (32-битной плавающей точкой), где диапазон изображений для imshow составляет 0,0-1,0 или 'uint8' (8-битный без знака) 0-255
Поскольку у был бул, преобразование в число означает преобразование Истина в 1
для float32, это нормально, потому что 1 - максимум для диапазона imshow
если вы используете uint8, это означает, что вы пытаетесь отобразить пиксели со значением 1/255, которые будут едва различимы, поэтому вы можете умножить их на 255, чтобы довести эти пиксели до максимума и отобразить их в виде ярких белых пикселей