我使用 OpenCV 读取图像。然后我使用 Matlab 加载相同的图像。 然后我显示图像。对于 OpenCV 加载的图像,图像内部没有图片,只有灰色平面。对于 Matlab 加载的图像,它具有我想要的图像。 图像像素值是非常小的 float 据,如 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);`
为什么我不能拥有与 Matlab 加载的相同的图像?
最佳答案
好吧,你不能像前面说的那样用 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
并读回:
Mat fm;
FileStorage fs("my.yml", FileStorage::READ );
fs["mat1"] >> fm;
关于OpenCV 和读取带有 float 据的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15289225/