2015-06-26 2 views
1

Я хочу выровнять несколько лиц, которые у меня есть здесь, используя openImaj. Я хочу прочитать фотографию на лицевой панели jpg, выровнять ее и, наконец, сохранить ее как в jpg после выравнивания. Вот где я застрял. НижеЛицевое выравнивание с использованием библиотек API openImaj

 public class FaceImageAlignment { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) throws IOException { 
     // TODO code application logic here 

     BufferedImage img = null; 
     img = ImageIO.read(new File("D:/face_test.jpg")); 

     //How to align face image using openImaj 
     //This is where I am stuck on doing face alignment. I tried doing the following 
     AffineAligner imgAlign = new AffineAligner(); 
     //but I could not figure out how to do face alignment with it 



     BufferedImage imgAligned = new BufferedImage(//I will need to put aligned Image here as a BufferedImage); 
     File f = new File("D:\\face_aligned.jpg"); 
     ImageIO.write(imgAligned, "JPEG", f); 

    } 
} 

Что код мне нужно иметь там к лицу выравнивания face_test.jpg к face_aligned.jpg?

ответ

2

Aligners работают в комбинации с детекторами лица, поэтому вам необходимо использовать детектор, чтобы найти лицо, а затем передать его выравнивателю. Различные выравниватели привязаны к различным реализациям детекторов, поскольку для выполнения выравнивания требуется различная информация; например, для аффинного выравнивателя нужны точки лицевого ключа, найденные FKEFaceDetector. Базовый код выглядит примерно так:

FImage img = ImageUtilities.readF(new File("...")); 
FKEFaceDetector detector = new FKEFaceDetector(); 
FaceAligner<KEDetectedFace> aligner = new AffineAligner(); 
KEDetectedFace face = detector.detectFaces(img).get(0); 
FImage alignedFace = aligner.align(face); 
ImageUtilities.write(alignedFace, new File("aligned.jpg")); 
+0

Спасибо @ Jon за ваш пример. Я импортировал следующие классы в моей платформе Java netbeans IDE 8.0. Они есть ; 'import java.io.File; import java.io.IOException; импорт org.openimaj.image.FImage; import org.openimaj.image.ImageUtilities; import org.openimaj.image.processing.face.alignment.AffineAligner; import org.openimaj.image.processing.face.alignment.FaceAligner; import org.openimaj.image.processing.face.detection.keypoints.FKEFaceDetector; import org.openimaj.image.processing.face.detection.keypoints.KEDetectedFace; ' но я продолжаю исправлять другие зависимости. Это нормально? –

+0

Могу ли я пропустить любой другой API openImaj? Когда я создаю, я не вижу никаких ошибок, но когда я запускаю, я нахожу новый класс, который должен исправить, когда я очищаю и запускаю еще один класс, который требует, чтобы я добавлял еще один API Java, выдает исключение. Я делал это в прошлом, как 5 часов, пока не подумал, что я должен делать что-то так неправильно. Для указанных выше импорт я сделал их из openImaj, предоставил библиотеки API в папке 1.3.1. Пожалуйста, порекомендуйте, где я могу использовать последние библиотеки API OpenImaj, отличные от тех, что были в 25 сентября-2014, если я вообще ошибаюсь. Буду признательна. –

+0

Вам действительно нужно использовать автоматический менеджер зависимостей - прочтите следующее: http://stackoverflow.com/questions/25602141/openimaj-jar-files – Jon