Android 活体人脸实时采集,百度、虹软
生活随笔
收集整理的這篇文章主要介紹了
Android 活体人脸实时采集,百度、虹软
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
?百度現在功能較少——使用虹軟,方便
?虹軟官網:https://ai.arcsoft.com.cn/ucenter/resource/build/index.html
申請應用,下載SDK即可
?
?
?虹軟已修改好的,可注冊人臉,人臉驗證成功——登陸的demo:https://download.csdn.net/download/meixi_android/18434756
1、首先去百度人臉識別創建應用
https://console.bce.baidu.com/ai/?_=1553067234412&fromai=1#/ai/face/client/index
?
?2、下載SDK
https://download.csdn.net/download/meixi_android/11041930
?
3、導入module
?
?4、人臉實時采集實現類
/*** 繪制人臉框。** @param model 追蹤到的人臉*/private void showFrame(FaceFilter.TrackedModel model) {Canvas canvas = mTextureView.lockCanvas();if (canvas == null) {return;}// 清空canvascanvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);if (model != null) {FaceInfo info = model.getInfo();model.getImageFrame().retain();RectF rectCenter = new RectF(info.mCenter_x - 2 - info.mWidth * 3 / 5,info.mCenter_y - 2 - info.mWidth * 3 / 5,info.mCenter_x + 2 + info.mWidth * 3 / 5,info.mCenter_y + 2 + info.mWidth * 3 / 5);previewView.mapFromOriginalRect(rectCenter);// 繪制框paint.setStrokeWidth(mRound);paint.setAntiAlias(true);canvas.drawRect(rectCenter, paint);if (model.meetCriteria()) {// 符合檢測要求,繪制綠框paint.setColor(Color.GREEN);}mFrameIndex++;Log.d("lgq", "add face index is:" + mFrameIndex);if (mFrameIndex >= 10) {final Bitmap face = model.cropFace();// final Bitmap face =ImageUtil.bitmapFromArgb(model.getImageFrame());if (face != null) {int size = mList.size();// 釋放一些,以防止太多if (size >= 6) {Bitmap bmp = mList.get(size - 6);if (bmp != null) {bmp.recycle();Log.d("lgq", "recycle size is:" + size);bmp = null;}}mList.add(face);Log.d("lgq", "add face ok");mHandler.postDelayed(scrollRunnable, 100);mFrameIndex = 0;faceDetectManager.stop();}}}mTextureView.unlockCanvasAndPost(canvas);}Runnable scrollRunnable = new Runnable() {@Overridepublic void run() {int count = mRecyAdapter.getItemCount();int curIndex = count - 1;mRecyclerview.scrollToPosition(curIndex);mRecyAdapter.setDatas(mList); // mRecyclerview.invalidate();mRecyAdapter.notifyDataSetChanged();// Log.d("lgq", "in runnuable data size is:" + mList.size());}};/*** 初始化recycleView畫截圖得到的人臉圖像*/private void initRecy() {mRecyAdapter = new RecyAdapter(this);mLayoutManager = new LinearLayoutManager(DetectActivity.this,LinearLayoutManager.HORIZONTAL, true);mRecyclerview.setLayoutManager(mLayoutManager); // mRecyclerview.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.HORIZONTAL));mLayoutManager.setStackFromEnd(true);mRecyclerview.setAdapter(mRecyAdapter);}private void setCameraType(CameraImageSource cameraImageSource) {// TODO 選擇使用前置攝像頭cameraImageSource.getCameraControl().setCameraFacing(ICameraControl.CAMERA_FACING_FRONT);// TODO 選擇使用usb攝像頭 // cameraImageSource.getCameraControl().setCameraFacing(ICameraControl.CAMERA_USB);// 如果不設置,人臉框會鏡像,顯示不準// previewView.getTextureView().setScaleX(-1);// TODO 選擇使用后置攝像頭 // cameraImageSource.getCameraControl().setCameraFacing(ICameraControl.CAMERA_FACING_BACK);// previewView.getTextureView().setScaleX(-1);}?
demo鏈接:https://download.csdn.net/download/meixi_android/11041930
在線回復bug:qq1085220040
?
運行效果
?
優化采集速度代碼:
// 設置回調,回調人臉檢測結果。 faceDetectManager.setOnFaceDetectListener((retCode, infos, frame) -> {LogPlus.e("###人臉檢測結果:" + retCode + ",infos:" + GsonUtil.getInstance().parseObjToJsonStr(infos));// TODO 顯示檢測的圖片。用于調試,如果人臉sdk檢測的人臉需要朝上,可以通過該圖片判斷//final Bitmap bitmap = Bitmap.createBitmap(frame.getArgb(), frame.getWidth(), frame.getHeight(), Bitmap.Config.ARGB_8888);if (infos == null) {// null表示,沒有人臉。LogPlus.e("###沒有檢測到人臉");setTips("沒有檢測到人臉");Bitmap faceBitmap = Bitmap.createBitmap(frame.getArgb(), frame.getWidth(), frame.getHeight(), Bitmap.Config.ARGB_8888);upload(faceBitmap);} else {/*有人臉*/setTips("人臉上傳...");Bitmap faceBitmap = FaceCropper.getFace(frame.getArgb(), infos[0], frame.getWidth());upload(faceBitmap);} });?在線交流人臉bug:QQ1085220040
總結
以上是生活随笔為你收集整理的Android 活体人脸实时采集,百度、虹软的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Particleground 粒子特效插
- 下一篇: 【Django】Django web项目