2017-06-15 167 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"別的東西,但是,只是可以肯定,我會離開它單獨直到你成爲多一點在家裏用在編程中搞亂。