OpenCV和使用浮点数据读取图像

Bry*_*yan 3 opencv

我使用OpenCV来读取图像.然后我使用Matlab加载相同的图像.然后我显示图像.对于OpenCV加载的图像,图像内部没有图像,只有灰色平面.对于Matlab加载的图像,它具有我想要的图像.图像像素值是非常小的浮点数据,如0.0021.我用来加载图像的代码如下所示.

`Mat image(IMAGE_ROW, IMAGE_COL, CV_64FC3);
Mat  gray(IMAGE_ROW, IMAGE_COL, CV_64FC1);
image = imread(filespath, CV_LOAD_IMAGE_COLOR );// Read the file
cv::imshow("Image", image);
cvtColor( image, gray, CV_BGR2GRAY, 1);
cv::imshow("gray", gray);`
Run Code Online (Sandbox Code Playgroud)

为什么我不能拥有Matlab加载的相同图像?

ber*_*rak 7

好吧,你不能用imwrite()/ imread()如前所述.

但你可以使用FileStorage保存/加载浮点Mats,如下所示:

Mat fm = Mat::ones(3,3,CV_32FC3); // dummy data

FileStorage fs("my.yml", FileStorage::WRITE );
fs << "mat1" << fm;  //choose any key here, just be consistant with the one below
Run Code Online (Sandbox Code Playgroud)

并回读:

Mat fm;
FileStorage fs("my.yml", FileStorage::READ );
fs["mat1"] >> fm;
Run Code Online (Sandbox Code Playgroud)