OpenCV 中的 imshow() 不适用于 cv::Mat 类型 CV_32F?

imshow() in OpenCV doesn't work for cv::Mat type CV_32F?

我有一个浮点数组

float* data; // stores pixel gray color 
cv::Mat img(h,w,CV_32F,data);
cv::namedWindow("Display window");
cv::imshow( "Display window", img );

那么我得到的是:

我搜索了很多资源,但找不到。我怀疑是类型的问题,但是我对比了定义,我觉得没问题。

谁能告诉我原因吗?

如果您的图像是单通道图像,则通过以下方式将其转换为 CV_8U

float* data; // stores pixel gray color 

cv::Mat img(h,w,CV_32F,data), 8u_image;

img.convertTo(8u_image,CV_8U);

cv::namedWindow("Display window");

cv::imshow( "Display window", 8u_image );