【发布时间】:2014-05-02 17:35:37
【问题描述】:
我在我的程序中读取了许多图像,并使用以下代码读取每个图像。
cv::Mat_<float> LoadedImage = imread(filename, CV_LOAD_IMAGE_GRAYSCALE);
而且,它适用于某些图像,但不适用于所有图像。 (图片均为JPG文件)
我使用 VS 2010 调试模式检查了结构,LoadedImage 具有以下结构。
Structure http://imageshack.com/a/img838/451/5n17.png
不知何故行为零(但列是正确的)。有人能向我解释为什么吗? :)
提前谢谢你。
我正在输入我目前正在使用的代码来避免这个问题。但我不确定为什么必须这样做。
// 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
【问题讨论】:
-
似乎无法正常打开文件!(
Bad Ptr) -
是的,无法正常打开。它显示正确的列但 0 行。它不仅无法打开,而且我认为还有其他原因。我想知道那个原因。 :)
-
您是否尝试仅打开那些文件!我的意思是不要一一阅读它们以达到那个糟糕的形象!首先打开它,让我们知道!如果您能与我们分享您的图像就更好了
-
我尝试先打开它。它仍然失败......
标签: opencv