2017-06-15 168 views
0

我还是一个新手Java程序员。 我已经下载了一些在互联网上的项目,但我有一些问题运行其中一个项目。 该项目是关于人脸识别。 它可以成功编译,但是当我想要加载图像时,文件图片不会显示在JFileChooser中。java 3d人脸识别程序

我认为这个问题是在这个部分:

File folder = fc.getSelectedFile(); 
      //System.out.println("1 "+folder); 
      FileFilter dirFilter = new FileFilter() { 
       public boolean accept(File pathname) { 
        return pathname.exists() && pathname.isDirectory(); 
       } 
      }; 
      FileFilter jpgFilter = new FileFilter() { 
       public boolean accept(File pathname) { 
        String filename = pathname.getName(); 
        boolean jpgFile = (filename.toUpperCase().endsWith("JPG") 
          || filename.toUpperCase().endsWith("JPEG")); 
        return pathname.exists() && pathname.isFile() && jpgFile; 
       } 
      }; 

      File[] folders = folder.listFiles(dirFilter); 
      //System.out.println("2 "+folders); 
      trainingSet.clear(); 
      faceBrowser.empty(); 

      for (int i = 0; i < folders.length; i++) {    //For each folder in the training set directory 
       File[] files = folders[i].listFiles(jpgFilter); 
       System.out.println("3 " + files); 
       for (int j = 0; j < files.length; j++) { 
        trainingSet.add(files[j]); 
       } 
      } 

      File[] files = trainingSet.toArray(new File[1]); 

      jlist.setListData(files); 
      //there is no image files in the folderwai 
      //System.out.println(files); 
      for (int i = 0; i < files.length; i++) { 
       //System.out.println(files[0]); 
       Face f = new Face(files[i]); 
       f.description = "Face image in database."; 
       f.classification = files[i].getParentFile().getName(); 
       faceBrowser.addFace(f); 
       faces.add(f); 
      } 

      jlStatus.setIndeterminate(false); 
      jlStatus.setString(files.length + " files loaded from " + folders.length + " folders."); 
      jlStatus.paintImmediately(jlStatus.getVisibleRect()); 


      jspFaceBrowser.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); 
      main.invalidate(); 

      jbTrain.setEnabled(true); 
      jbCropImage.setEnabled(true); 
     } 
+0

什么是'trainingSet'声明为? –

回答

1

这仅支撑与扩展.jpg.jpeg结尾的文件。如果您要加载的文件以.png或其他扩展名结尾,则必须使用转换器将其转换为.jpg,可能是在线转换器,如png2jpg.com。转换后,它应显示在JFileChooser中。

这种行为被宣布这一行:

boolean jpgFile = (filename.toUpperCase().endsWith("JPG") || filename.toUpperCase().endsWith("JPEG")); 

你可以改变"JPG"别的东西,但是,只是可以肯定,我会离开它单独直到你成为多一点在家里用在编程中搞乱。