OpenImaj - 面部检测 - 显示找到的面部

时间:2016-03-09 18:11:52

标签: java face-detection openimaj

我正在使用OpenImaj来检测图像中的面部。

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.List;

import org.openimaj.image.FImage;
import org.openimaj.image.ImageUtilities;
import org.openimaj.image.MBFImage;
import org.openimaj.image.colour.Transforms;
import org.openimaj.image.processing.face.detection.DetectedFace;
import org.openimaj.image.processing.face.detection.FaceDetector;
import org.openimaj.image.processing.face.detection.HaarCascadeDetector;

public class FaceDetection {

    public static void main(String[] args) {
        MBFImage image;
        try {
            image = ImageUtilities.readMBF(new FileInputStream("image.jpg"));
            FaceDetector<DetectedFace,FImage> fd = new HaarCascadeDetector(80);
            List<DetectedFace> faces = fd. detectFaces (Transforms.calculateIntensity(image));

            System.out.println(faces.size());
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

要显示图像,我们可以使用DisplayUtilities类:DisplayUtilities.display(image); 然而,找到的面部是DetectedFace类型。

您知道如何显示DetectedFace类型中的面部吗?

谢谢。

2 个答案:

答案 0 :(得分:3)

除了之前的回答:

  1. 使用getFacePatch(),您可以获得FImage的面孔:

    final FImage faceFImage = face.getFacePatch();
    
  2. 现在这个 faceFImage 需要转换为BufferedImage

    final BufferedImage bufferedFaceImage = ImageUtilities.createBufferedImage(faceFImage);
    
  3. 现在可以显示 bufferedFaceImage

    DisplayUtilities.display(bufferedFaceImage);
    

答案 1 :(得分:1)

您应该能够使用getFacePatch()获取图像。

文档在http://openimaj.org/apidocs/index.html

相关问题