深度学习人脸表情识别中,需要比较数据集中的文件名和train_list.txt中的文件名是否相一致的java代码实现

2023-05-16

如下图所示,现有一个人脸表情数据集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 {
      //打开存放数据集的文件夹,并读取每一个图片的文件名,存放在str_picture中
      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));

      //把每一个图片名由“train_00001_aligned.jpg”改成“train_00001.jpg”
      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));

      //打开并读取存放数据集名称以及对应标签的txt文件train_list.txt,并把每一行的数据存放在str_txt中
      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++;
      }

      //把“train_00000.jpg 5”变成“train_00000.jpg”,即把图片对应的标签去掉
      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);
      }

      //判断数据集文件名称和txt文件中对应的名字是否相吻合,即比较str_picture和str_txt_new,二者不一致的输出,一致的就不用输出
      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(使用前将#替换为@)

深度学习人脸表情识别中,需要比较数据集中的文件名和train_list.txt中的文件名是否相一致的java代码实现 的相关文章

随机推荐