27

私は現在実験的なカメラアプリに取り組んでいます。現在、顔検出の実装を検討しており、現在、選択肢を検討しています。

Android で利用可能な OpenCV ポートとその顔検出機能を使用することを検討しましたが、以前の実装で見たデモから、カメラは大幅に遅れているようです。

HTC Desire のカメラが顔検出をサポートしていることを考えると、少なくともある程度まともな顔検出システムを導入できるはずです。どうすれば最良の結果を得ることができるかについて誰かが意見を持っているかどうか疑問に思っていました.利用可能なライブラリを使用していますか? 特定のアルゴリズムを自分で実装しますか?

4

3 に答える 3

12
  1. Android SDK でFaceDetectorを試してください。顔の位置と角度を BMP で返します。しかし、それは非常に高速ではありません。

    Android 2.2 で動作する FaceDetector と OpenGL (長方形を描画) を使用したリアルタイムの顔検出サンプルを次に示します。

  2. Android での OpenCV

    これは Linux で試した方がよいでしょう (Windows でも試しましたが失敗しました)。

  3. JavaCV (強く推奨)

    カメラを使ったリアルタイム顔検出のサンプルコードがあります。ダウンロードページの「javacv-src-*.zip」を参照してください。

于 2011-05-19T13:08:40.820 に答える
7

Android SDKには、特定のビットマップでを検索するために使用できるFaceDetectorが付属しています。

私自身は使用していませんが、顔の歪みアプリの開発者は、OpenCVと比較してあまり正確ではないと言います。それはあなたのニーズに合うかもしれません、それはおそらくHTCDesireのカメラアプリが使用するものです。

于 2010-11-08T18:39:34.370 に答える
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);
        }
    }

ここに画像の説明を入力

ここから完全なソースコードをダウンロードしてください: https://github.com/Jorgesys/Android_Face_Detection

于 2014-11-12T22:45:00.783 に答える