我还是一名新手Java程序员。 我已经在互联网上下载了一些项目但我在运行其中一个项目时遇到了一些问题。 该项目涉及面部识别。 它可以成功编译,但是当我想加载图像时,文件图片不会显示在JFileChooser中。
我认为问题出在这一部分:
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 :(得分:1)
这仅支持以扩展程序.jpg
或.jpeg
结尾的文件。如果您要加载的文件以.png
或其他扩展程序结尾,则必须使用转换器将其转换为.jpg
,可能是在线转换为png2jpg.com。转换后,它应显示在JFileChooser
。
此行已在此行中声明:
boolean jpgFile = (filename.toUpperCase().endsWith("JPG") || filename.toUpperCase().endsWith("JPEG"));
你可以将"JPG"
更改为其他内容,但是,为了确定,我会一个人待着,直到你在家里变得多一点时间乱搞编程。