文章目录

Android自带的人脸识别API

Android实现人脸识别可以通过google原生自带API实现,只能识别静态图片,缺点是精度不高,识别信息很少,只有眼睛的识别

栗子

在页面上放一个按钮,点击按钮识别drawable下的image1~4里人脸数量
Android人脸识别_人脸识别

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.media.FaceDetector;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

int imgs[] = {R.drawable.image1, R.drawable.image2, R.drawable.image3, R.drawable.image4};

public void onClickButtonOne(View v) {
for (int i : imgs) {
BitmapFactory.Options mOption = new BitmapFactory.Options();
mOption.inPreferredConfig = Bitmap.Config.RGB_565;
Bitmap mBitmap = BitmapFactory.decodeResource(getResources(), i, mOption);
int maxFaces = 20;
FaceDetector mFaceDetector = new FaceDetector(mBitmap.getWidth(), mBitmap.getHeight(), maxFaces);
FaceDetector.Face[] mFace = new FaceDetector.Face[maxFaces];
maxFaces = mFaceDetector.findFaces(mBitmap, mFace);
Log.v("FaceDetector", "No." + i + "face:" + "face number:" + maxFaces + " width:" + mBitmap.getWidth() + "height:" + mBitmap.getWidth());
}
}
}

运行程序,查看日志

face number:1 width:2688height:2688
face number:0 width:2751height:2751
face number:2 width:804height:804
face number:15 width:1920height:1920

还是不太准的。SNH48的某位小姐姐并没有被识别出来…

第三方提供

googel自带的只能识别静态图片,第三方提供的功能比较强大,阿里的人脸识别,Face++都可以

大牛们的封装


Android人脸识别_人脸识别_02

效果如上图,扫描到人脸后,可以获取到人脸的bitmap,显示在右上角

当然功能不止如此,项目Github地址
​​​ https://github.com/betri28/FaceDetectCamera​