【问题标题】:reading SVM training dataset读取 SVM 训练数据集
【发布时间】:2014-05-18 11:27:51
【问题描述】:

我想读取用于 SVM 训练的训练图像集。这是代码

  %Location of the image.
  Class1 = 'Training/11';
  % load the dataset
  dirList = dir(fullfile(Class1,'*.ppm'));
  %dirList
  files={dirList.name}';

我得到的文件类型是单元格类型。我如何访问这些图像来执行某些操作,例如显示它并进行特征提取??

当我试图展示它时:

   figure, imshow(files)

我收到了这个错误

   Error using imageDisplayValidateParams
   Expected input number 1, I, to be one of these types:

   double, single, uint8, uint16, uint32, uint64, int8, int16, int32, int64,
   logical

   Instead its type was cell.

    Error in imageDisplayValidateParams (line 12)
    validateattributes(common_args.CData, {'numeric','logical'},...

    Error in imageDisplayParseInputs (line 79)
    common_args = imageDisplayValidateParams(common_args);

     Error in imshow (line 220)
     [common_args,specific_args] = ...

你知道如何访问和处理文件中的这些图像吗?

我的文件夹目录!!

MY DIRECTORY

Inside my training Folder

【问题讨论】:

    标签: image matlab image-processing svm matlab-cvst


    【解决方案1】:

    首先,imshow 需要一个实际图像作为其输入。您正在指定一个字符串元胞数组。最重要的是,您一次只能显示一张图像。尝试访问单个单元格元素,并使用它们读取图像并将它们显示在屏幕上。

    im1 = imread(files{1}); % Read in first image
    imshow(im1); % Show the first image
    figure;
    im2 = imread(files{2}); % Read in second image
    imshow(im2); % Show the second image
    

    如果你想显示所有这些,你可以尝试使用imshowsubplot的组合。

    假设您有 9 张图片,并希望将它们组织成 3 x 3 的网格。你可以这样做:

    figure;
    for i = 1 : 9
        subplot(3, 3, i);
        im = imread(files{i});
        imshow(im);
    end
    

    现在要执行特征提取,我的建议是您看一下 MATLAB 随附的计算机视觉工具箱。有一整套工具可以为您执行特征提取。诸如 MSER、SURF、HOG 以及匹配图像对之间关键点的方法。

    查看此链接:http://www.mathworks.com/products/computer-vision/code-examples.html

    【讨论】:

    • 我收到此错误 --> 使用 imread 时出错(第 350 行)文件“01153_00000.ppm”不存在。
    • 那是因为您的工作目录中不存在该图像。在 MATLAB 顶部,将工作目录更改为图像所在的位置。如果要避免更改工作目录,请使用绝对路径。 FWIW: MATLAB 错误消息非常有见地。建议您在发帖前仔细阅读邮件。
    • 嘿,请看一下我刚刚上传的图片。你可以看到我有 2 个文件夹(培训和测试),在培训文件夹中我有另一个文件夹,其中包含不同的类。我应该如何更改目录?自动读取不同分类(文件夹)的所有图片
    • 您可以直接在 MATLAB 中调用命令提示符/终端命令。在运行代码之前执行cd/training 进入training 文件夹,然后为测试文件夹执行cd.. cd/testing。但是,如果您想从目录中获取每个文件并递归地获取其子目录,请查看此 SO 帖子:stackoverflow.com/questions/2652630/…注意: 在 SO 上查看并搜索与您在发布前要问的内容相关的问题。尽量减少混乱。
    • 嘿,很抱歉再次打扰你,但是我已经使用了这个命令 dirData = dir(D:\COBA);,,但是仍然得到一个错误.. 你知道 dir 值是什么吗应该是?
    猜你喜欢
    • 2015-08-14
    • 2015-05-04
    • 2012-02-21
    • 2014-02-21
    • 2015-09-26
    • 1970-01-01
    • 1970-01-01
    • 2013-12-16
    • 2016-08-09
    相关资源
    最近更新 更多