Matlab实现图像识别(一)

我们采用的是101_ObjectCategories这个数据集(这里是其主页,你也可以在这里获得数据集以及我的代码),这个数据集是加州理工的一个数据集,里面有101个文件夹,每个文件夹的名字是一个物体,文件夹内有几十张上百张这个物体的图像,每个图像的大小不尽相同,总共才100多MB,比较好训练,有一个同类的数据集,它还有有200多个物体的一个数据集,但是有几个G,所以不太适合了。相对于MNIST数据集来说,用matlab的话,MNIST数据集显得更难读取了,因此也不选用MNIST数据集。

需要注意的是,这个101_ObjectCategories数据集好像有102个文件夹,我删去了一个文件夹BACKGROUND_Google,顾名思义是Google的背景,但是里面的图片非常杂乱,根本看不出有什么联系,所以这个文件夹应该被删除。

首先要能读取这个图像,采用下面语句:

img = imread('101_ObjectCategories/accordion/image_0001.jpg');
image(img);

就可以显示图像了:

紧接着,我们希望能读取到所有图像,首先我们能获取到每个图像的名字,就是它们文件夹的名字,我们先获取这个名字。

matlab里有dir函数,这么用:

namelist = dir('101_ObjectCategories');

首先你得确保这个文件夹跟这个脚本放在一起,不放在一起也没关系,写成绝对路径就成。

读取后namelist 的格式为
* name -- filename
* date -- modification date
* bytes -- number of bytes allocated to the file
* isdir -- 1 if name is a directory and 0 if not

然后我们获取这些物体名:

for i = 1:length(namelist)
    namelist(i).name
end

所以你看,我们得到了这些名字,然后我们就可以读取里面的图像了。

但是有一个 小问题是,隐藏文件夹'.'和'..'都会被读取到,因此我们需要判断一下输出:
 

for i = 1:length(namelist)
    if namelist(i).name ~= '.' || namelist(i).name ~= '..' 
        namelist(i).name
    end
end

这样就可以得到正确的输出。接下来处理图片。


 

  • 12
    点赞
  • 104
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值