Opencv imread()到Mat_ <float> </float>

时间:2014-05-02 17:35:37

标签: opencv

我正在我的程序中阅读许多图像,并使用以下代码来读取每个图像。

cv::Mat_<float> LoadedImage = imread(filename, CV_LOAD_IMAGE_GRAYSCALE);

并且,它适用于某些图像,但不适用于所有图像。 (图像都是JPG文件)

我使用VS 2010调试模式检查了结构,LoadedImage具有以下结构。

Structure http://imageshack.com/a/img838/451/5n17.png

以某种方式行为零(但是cols是正确的)。有人能够向我解释原因吗? :)

提前谢谢。

我正在使用我目前使用的代码来避免此问题。但我不确定为什么必须这样做。

// Read image with imread() to Mat
cv::Mat LoadedImage_CharFormat = imread(fullfilename);  

// Convert to Gray image
if(LoadedImage_CharFormat.type() != CV_8UC1)
    cvtColor(LoadedImage_CharFormat, LoadedImage_CharFormat, CV_RGB2GRAY);

// Convert to Mat_<float> 
cv::Mat_<float> LoadedImage;
LoadedImage_CharFormat.convertTo(LoadedImage, CV_32F);

以下是您可以尝试的图片。 http://imagizer.imageshack.us/a/img845/4624/y8h0.jpg

1 个答案:

答案 0 :(得分:4)

您无法将灰度(uchar)图像直接读入浮点Mat。 相反,

Mat m = imread("image.jpg",0);
Mat_<float> fm;

m.convertTo(fm,CV_32F);