Android中的人脸检测?

时间:2010-11-08 16:31:47

标签: android opencv camera face-recognition

我目前正在开发一款实验相机应用。我正在考虑实施面部检测,目前正在权衡我的选择。

我已经考虑过可用于Android的OpenCV端口并使用他们的面部检测功能,但是从我以前的实现中看到的演示,相机似乎滞后了很多。

考虑到HTC Desire上的摄像头具有面部检测支持,我知道必须至少能够获得一个半体面的人脸检测系统。我只是想知道是否有人对如何获得最佳结果有意见...使用可用的库?自己实现一个特定的算法?

3 个答案:

答案 0 :(得分:12)

  1. 在Android SDK中尝试FaceDetector。它返回BMP中的面部位置和角度。但它不是很快。

    这是使用FaceDetector和OpenGL(绘制矩形)的realtime face detection sample,它适用于Android 2.2。

  2. OpenCV in Android

    你最好在Linux上尝试这个(我在Windows上尝试过,但失败了)。

  3. JavaCV(强烈推荐)

    使用相机有一个实时人脸检测示例代码。请参阅下载页面上的“javacv-src - * .zip”。

答案 1 :(得分:7)

Android SDK附带FaceDetector,可用于给定位图中的find faces

我自己没有使用它,但面部失真应用程序开发人员表示,与OpenCV相比,它并不是非常准确。它可能适合您的需求,这可能是HTC Desire的相机应用程序所使用的。

答案 2 :(得分:3)

这是使用FaceDetector

的基本示例
public myView(Context context) {
        super(context);
        BitmapFactory.Options BitmapFactoryOptionsbfo = new BitmapFactory.Options();
        BitmapFactoryOptionsbfo.inPreferredConfig = Bitmap.Config.RGB_565;
        myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.threepoint_shooters_1990, BitmapFactoryOptionsbfo);
        imageWidth = myBitmap.getWidth();
        imageHeight = myBitmap.getHeight();
        myFace = new FaceDetector.Face[numberOfFace];
        myFaceDetect = new FaceDetector(imageWidth, imageHeight, numberOfFace);
        numberOfFaceDetected = myFaceDetect.findFaces(myBitmap, myFace);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        canvas.drawBitmap(myBitmap, 0, 0, null);
        Paint myPaint = new Paint();
        myPaint.setColor(Color.GREEN);
        myPaint.setStyle(Paint.Style.STROKE);
        myPaint.setStrokeWidth(3);
        for (int i = 0; i < numberOfFaceDetected; i++) {
            Face face = myFace[i];
            PointF myMidPoint = new PointF();
            face.getMidPoint(myMidPoint);
            myEyesDistance = face.eyesDistance();
            canvas.drawRect((int) (myMidPoint.x - myEyesDistance * 2),
                    (int) (myMidPoint.y - myEyesDistance * 2),
                    (int) (myMidPoint.x + myEyesDistance * 2),
                    (int) (myMidPoint.y + myEyesDistance * 2), myPaint);
        }
    }

enter image description here

在此处下载完整的源代码: 的 https://github.com/Jorgesys/Android_Face_Detection