博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用matlab给图片打标签
阅读量:3558 次
发布时间:2019-05-20

本文共 1983 字,大约阅读时间需要 6 分钟。

最近的一个任务就是给图片打标签,纯体力活儿。

简单描述任务:给几个文件夹里的图片分类。

常规做法具体是:

1. 先打开一个图像,图像上可能包含A/B/C/D四个东西中的一个或者几个;

2. 判断这个图像上包含的是什么:A?AB?等;

3. 如果图像不包含所需东西中的任何一个,则丢弃;

4.否则将图像保存到对应文件夹,并将图像重命名;

这个活儿最恶心的就是要大量操作“读图”,“判断”,“另存”为这几个简单重复的动作。然而就是这样的特点使得我有机会来优化完成此任务的流程。

优化之后的流程:

1. 图像自动弹出;

2.我根据肉眼判断图像类别,在键盘上敲下图像标签(标签预设为123等数字,十分节省时间);

3.程序根据标签自动保存图像,并将图像重命名;

你看,写一个matlab函数可以让我只需要做一件事(如上面的粗体字所描述)。

我把整个程序分为3个部分,根据功能分为:

1. read()函数;

2.saveAs()函数;

3. main()函数;

filefolder_path = '';save_path = '';work_path = '';filefolders = dir(filefolder_path) %读出所有的文件夹的名字types = ['A';'B';'C';'D']%新建分类的文件夹for k=1:length(types)    mkdir([save_path types])end%processfor i=1:length(filefolders)    filefolder = filefolders(i).name;    file_path = [filefolder_path '\' filefolder]    files = dir(file_path);    len = length(files);    %如果是空文件夹,进行下一个循环    if len<1        continue    end    %对本文件夹中的图像打标签    for j=1:len        %dir得到的东西包含了'.'和'..'        if strcmp(files(j).name,'.') || strcmp(files(j).name,'..')            continue        end                thisfile = [file_path '\' files(j).name];        read(thisfile);        #预设标签        p = '1:A 5:B 6:C 9:D';        #a就是我们输入的数字        a = input(p);        #dest_path是我们想要另存为的路径        dest_path=saveAs(a,types,save_path);        p1 = '1:AP 2:LAT';        ti = input(p1);        if ti == 1            new_name = 'AP';        elseif ti == 2            new_name = 'LAT';        end        %复制图像到新的位置        copyfile(file_path,dest_path);        %切到新位置来重命名        cd(dest_path);        %设置重命名的命令command        command = ['rename' 32 current_name 32 new_name];        status = dos(command);        %重命名之后回到原来的工作路径;        cd(work_path);    endend

CSDN好像没有matlab代码格式啊。。。

另外:

1. 在matlab命令行窗口输入:format long可以让数字显示位数变为16.

2. input函数的使用:p= 'this will show on the screen'; a= input(p);

当你在键盘上输入个什么东西的适合,它就会被a拿到;

3. 注意要调用的函数所在路径,与程序中的工作路径的区别;

4. 审核任务的性质,灵活运用编程来简化工作。

 

更多学习资料,请关注下面的公众号:不定期分享

  1. 深度学习网络总结
  2. 机器学习算法及其应用场景
  3. 算法与数据结构(leetcode 题解)
  4. cuda编程与并行优化
  5. 其他读书分享如:《战国策》,《智囊全集》
  6. 宇宙常识科普与星座辨别
  7. 等等

 

来自 <>

转载地址:http://syjrj.baihongyu.com/

你可能感兴趣的文章
哈夫曼树java代码实现
查看>>
快速排序
查看>>
vue路由高亮的两种方式
查看>>
vue router 报错: Uncaught (in promise) NavigationDuplicated {_name:""NavigationDuplicated"... 的解决方法
查看>>
vue跳转页面的两种方式
查看>>
存储器题目解析(持续更新中....)
查看>>
存储器知识要点
查看>>
Cache模拟器的实现
查看>>
实验2:MIPS指令系统和MIPS体系结构
查看>>
设计模式七大原则
查看>>
手写 | spring事务
查看>>
SpringBoot入门(二)场景启动器
查看>>
SpringBoot入门--自动配置
查看>>
springboot读取配置文件 例:读取配置文件的优先顺序;在主配置文件中激活其他配置文件;加载非主配置文件
查看>>
自动配置原理
查看>>
TCP协议
查看>>
关于Linux系统使用遇到的问题-1:vi 打开只读(readonly)文件如何退出保存?
查看>>
redis 持久化详解,RDB和AOF是什么?他们优缺点是什么?运行流程是什么?
查看>>
spring注解版(一)
查看>>
SpringBoot中访问控制层(controller)得不到Json数据
查看>>