如下图所示,现有一个人脸表情数据集RAF-DB,其train文件中的每一个图片的文件名称为“train_00001_aligned.jpg”
另外,有train_list.txt文件标记了上图文件夹每一张数据图片所对应的标签,如下图所示,其每一张图片及对应的标签表示为“train_00000.jpg 5”
现在问题来了,需要比较train文件夹中的每一张图片和train_list.txt文件中的每一行所标记的名字是否相一致,如果不一致的则需要修改,其功能使用java代码实现如下:
package com.cskaoyan.object.api;
import java.io.*;
import java.util.Arrays;
public class Demo4Other {
public static void main(String[] args) throws IOException {
File file = new File("C:\\Users\\蝙蝠侠\\Desktop\\2000\\文件夹里面的才可以\\RAF\\train");
String str_picture[] = file.list();
System.out.println(Arrays.toString(str_picture));
for(int i=0;i<str_picture.length-1;i++) {
str_picture[i] = str_picture[i+1];
}
System.out.println(Arrays.toString(str_picture));
for(int i=0;i<str_picture.length-1;i++) {
String str = str_picture[i].replace("_aligned.",".");
str_picture[i] = str;
}
System.out.println(Arrays.toString(str_picture));
File filetxt = new File("C:\\Users\\蝙蝠侠\\Desktop\\2000\\文件夹里面的才可以\\RAF\\train_list.txt");
FileInputStream input = new FileInputStream(filetxt);
BufferedReader fis=new BufferedReader(new InputStreamReader(input));
String[] str_txt = new String[str_picture.length];
String s;
int i=0;
while(( s = fis.readLine())!=null) {
str_txt[i] = s;
i++;
}
int last = str_txt[0].indexOf(" ",0);
String[] str_txt_new = new String[str_picture.length];
for(int k=0;k<str_picture.length-1;k++) {
str_txt_new[k] = str_txt[k].substring(0,last);
}
System.out.println("———————华丽的分割线———————");
for(int m = 0;m<str_picture.length-1;m++) {
int result = str_picture[m].compareTo(str_txt_new[m]);
if(result!=0) {
System.out.println(str_picture[m]+"和"+str_txt_new[m]+"不一样");
}
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)