正如linux下面shell脚本一样,windows下也可以使用DOS批处理脚本文件对文件进行管理。

本文背景

在做人脸识别的时候,开始是在ORL人脸库上测试识别率,所以测试程序是根据ORL的目录结构来写的,(ORL人脸是分类存放的,不同的人脸放在不同的目录下,同一个人的人脸放在同一个目录下)。后来又需要在CASE_PEAL-R1人脸库上进行测试,这是中科院采集的中国人的人脸库,它的目录结构跟ORL不同,它把所有人脸都放在一个目录下,不同人的人脸通过文件名来区分。那么,要在这个库上进行测试,就有两个方案,一是再根据这个目录结构重写一个测试代码,二是把这个目录结构改成跟ORL一样的格式。显然第二种方式更好,如果文件比较少的话,手动创建几个目录,再把文件分类存放就可以了,但是CASE_PEAL-R1人脸库一个子集有几千张人脸图像,显然手动的方式行不通,如果在linux下很容易就想到写一个shell脚本分分钟搞定它,但是又不想把文件拷到linux下转换之后又拷回来,那么最好的方法就是写一个DOS批处理的脚本来处理了。

分类前的人脸库

如下所示,同一个人的人脸图像名称主标识一样,副标识不同,不同的人主标识不一样。

分类程序代码

classify.bat

@echo off & setlocal EnableDelayedExpansion ::延迟变量
set /a cnt=0
set /a num=5
set /a class=0
for %%s in (*.bmp) do ( ::获取当前目录下*.bmp文件set /a result=!cnt!%%%num%if !result! equ 0 (::创建目录set /a class+=1echo "class=!class!"mkdir !class!)@echo %%s @move %%s !class!@set /a cnt+=1@echo !cnt!
)
pause

以上代码,首先给出了同一个人有5张人脸,然后再遍历当前目录下的所有文件,注意由于人脸库是由文件名来区分类别的,所以遍历的时候每个人的人脸是按先后顺序遍历出的,对于文件名没有这种规律的该程序并不起作用,每遍历5次( 即遍历次数对5求余等于0的时候)就创建一个类别目录,同时将该类别的文件移动到类别目录中。将代码拷贝到一个.txt文本文件中再保存为 classify.bat,把这个文件拷贝到人脸库所在目录,双击运行即可。

这里有个DOS知识点就是,@echo off & setlocal EnableDelayedExpansion ::延迟变量,在这句代码中@表示取消命令回显,即运行的时候DOS终端窗口不会显示命令本身,只会显示结果或错误信息, & setlocal EnableDelayedExpansion ::延迟变量这里是为了在for循环中每次循环都使用变量最新的值,并且使用!变量名!来引用,如果使用%变量名%,只会引用到最初的值和最后的值。

分类后的人脸库


逆分类程序代码

如果像还原成CASE_PEAL-R1本身的目录结构,那么就可以使用下面的代码实现:

unclassify.bat

@echo off & setlocal EnableDelayedExpansion
set /a cnt=0
set /a num=5
set /a class=0
for /r %%s in (*.bmp) do ( ::移出所有文件echo %%smove %%s .
)for /d %%s in (*) do ( ::删除目录echo %%srd %%s
)pause

这里注意 for /r %%s in (*.bmp) do会遍历当前目录及其子目录以及子目录的子目录等下面的所有*.bmp的图像文件, for /d %%s in (*) 遍历得到所有子目录名称。

同样把代码拷贝到.txt文件中再另存为unclassify.bat,再把这个文件拷贝到人脸库文件中双击运行,人脸库就还原为原来的目录结构了!

DOS批处理对人脸库进行分类相关推荐

  1. matlab里实现AR人脸库2600张人脸图的分类处理

    AR人脸库,包含50位男性和50位女性,每人26张共2600张图. 但是网上下载的AR人脸库并没有进行分类,而是2600张图在一个文件夹中,本示例在matlab里编程实现将2600张人脸图分类为编号为 ...

  2. DOS批处理的字符串功能

    DOS批处理的字符串功能 批处理有着具有非常强大的字符串处理能力,其功能绝不低于C语言里面的字符串函数集.批处理中可实现的字符串处理功能有:截取字符串内容.替换字符串特定字段.合并字符串.扩充字符串等 ...

  3. 应用层下的人脸识别(二):人脸库

    本文作者根据多年人脸识别项目经验,总结了人脸识别技术在安防.商业领域应用及产品设计细节,汇总成应用层下的人脸识别系列文章. 本文为系列文章的第二篇,介绍人脸库的相关内容.人脸库是人脸识别的基础,建立人 ...

  4. DOS批处理高级教程:第三章 FOR命令中的变量(转)

    DOS批处理高级教程:第一章 批处理基础 DOS批处理高级教程:第二章 DOS循环for命令详解 DOS批处理高级教程:第三章 for命令中的变量 DOS批处理高级教程:第四章 批处理中的变量 DOS ...

  5. DOS批处理延时技术

    DOS批处理延时技术 举个例子,我们要延时5秒打开gdh.txt这个文件,可以用以下几个方法 方法一:ping  缺点:时间精度为1秒,不够精确   www.2cto.com   @echo off  ...

  6. Dos批处理中符号作用大全

    Dos批处理中符号作用大全 2007-07-14 10:43 @  \\隐藏命令的回显. ~  \\在for中表示使用增强的变量扩展:  在set中表示使用扩展环境变量指定位置的字符串:  在set/ ...

  7. DOS批处理中%cd%和%~dp0的区别

    DOS批处理中%cd%和%~dp0的区别 在DOS的批处理中,有时候需要知道当前的路径. 在DOS中,有两个环境变量可以跟当前路径有关,一个是%cd%, 一个是%~dp0.   这两个变量的用法和代表 ...

  8. Dos批处理编程常用命令

    Dos批处理编程常用命令 打印输出交互 echo:打印输出.比如:echo 哈哈哈  就在dos页面里输出"哈哈哈" echo .:输出空行.[注意空格和点哈] echo off: ...

  9. DOS批处理不支持将UNC 路径作为当前目录的巧妙解决方案

    DOS批处理不支持将UNC 路径作为当前目录的巧妙解决方案 参考文章: (1)DOS批处理不支持将UNC 路径作为当前目录的巧妙解决方案 (2)https://www.cnblogs.com/liuz ...

  10. openCV+ASM+LBP+Gabor实现人脸识别(GT人脸库)

    原理:使用GT人脸库做样本,VS2010下使用openCV2.44自带的Haar算法检測人脸区域,ASM Library特征检測,然后使用YCrCb颜色空间做肤色检測,再用LBP+Gabor小波提取特 ...

最新文章

  1. Apache开启Gzip压缩技术,加快网页访问速度
  2. 常用的php函数,PHP常用函数整理(上)
  3. Objc基础学习记录5
  4. moxy json介绍_通过MOXy实现使您的JAXB更清洁
  5. 通信工程施工设计纲领文件
  6. OpenCV 2.4.0 正式版发布,开源计算机视觉库
  7. 【2016年第6期】基于大数据的移动互联网主动运维理论和实践进展
  8. php编写大型网站问题集
  9. ylmf os 将雨林木风的系统diy定制成自个儿个人的专用系统
  10. java对象 引用 原理,java对象引用和对象值得行为
  11. c++ 标准异常类层次结构_详解Java异常
  12. 中兴代工移动光猫GM620开启telnet
  13. 如果让markdown的图片变清晰/改变大小
  14. Android下WPS打开Excel2007版也有问题
  15. Java GC G1 详解
  16. PHP上传文件大小限制大全
  17. JPA 查询 未查询到时返回的list的size为0 但是引用并不为空
  18. 【答学员问】面试问题-毕业时候为什么没有选择开发
  19. vscode占内存太大问题
  20. 论文写作 1: 学术论文的基本概念

热门文章

  1. python 爬虫库 u_9个用来爬取网络站点的 Python 库
  2. cron表达式解析 3秒执行一次
  3. PPT - 如何在PPT里面实现数字的随机抽奖?
  4. FPGA实现FIR滤波器
  5. delphi打包python_python for delphi 组件安装和调试的那些坑儿 !
  6. UNIX 环境高级编程之我见
  7. ZUL页面注解语法与Java注解语法
  8. java虚拟怎么安装_JAVA虚拟机怎么安装?
  9. Java Web学习视频
  10. Microsoft Visio 画图遇到的问题及解决办法