private void addListener()
        {
            // 设置回调,回调人脸检测结果。
            faceDetectManager.setUseDetect(true);
            //        faceDetectManager.setOnFaceDetectListener(new FaceDetectManager.OnFaceDetectListener() {
            //        @Override
            //        public void onDetectFace(int retCode, FaceInfo[] infos, ImageFrame frame)
            //        {
            //            // TODO 显示检测的图片。用于调试,如果人脸sdk检测的人脸需要朝上,可以通过该图片判断
            //            Bitmap bitmap =
            //                  Bitmap.createBitmap(frame.getArgb(), frame.getWidth(),
            //                          frame.getHeight(), Bitmap.Config.ARGB_8888);
            //            handler.post(new Runnable() {
            //                @Override
            //                public void run()
            //            {
            //                // testView.setImageBitmap(bitmap);
            //            }
            //        });
            //        checkFace(retCode, infos, frame);
            //        showFrame(frame, infos);

            //    }
            //});
        }
 protected override void OnStart()
 {
     base.OnStart();
     // 开始检测
     faceDetectManager.start();
     faceDetectManager.setUseDetect(true);
 }
Beispiel #3
0
        // 从相册检测。
        private void detect(string filePath)
        {
            FileImageSource fileImageSource = new FileImageSource();

            fileImageSource.setFilePath(filePath);
            detectManager.setImageSource(fileImageSource);
            detectManager.setUseDetect(true);
            //            detectManager.setOnFaceDetectListener(new FaceDetectManager.OnFaceDetectListener()
            //            {


            //            public void onDetectFace(int status, FaceInfo[] faces, ImageFrame frame)
            //            {
            //                if (faces != null && status != FaceTracker.ErrCode.NO_FACE_DETECTED.ordinal()
            //                        && status != FaceTracker.ErrCode.UNKNOW_TYPE.ordinal())
            //                {
            //                    final Bitmap cropBitmap = FaceCropper.getFace(frame.getArgb(), faces[0], frame.getWidth());
            //                    handler.post(new Runnable()
            //                    {


            //                        public void run()
            //                    {
            //                        avatarIv.setImageBitmap(cropBitmap);
            //                    }
            //                });

            //            // File file = File.createTempFile(UUID.randomUUID().toString() + "", ".jpg");
            //            File faceDir = FileUitls.getFaceDirectory();
            //            if (faceDir != null)
            //            {
            //                String imageName = UUID.randomUUID().toString();
            //                File file = new File(faceDir, imageName);
            //                // 压缩人脸图片至300 * 300,减少网络传输时间
            //                ImageUtils.resize(cropBitmap, file, 300, 300);
            //                RegActivity.this.faceImagePath = file.getAbsolutePath();
            //                submitButton.setVisibility(View.VISIBLE);
            //            }
            //            else
            //            {
            //                toast("注册人脸目录未找到");
            //            }
            //        } else {
            //                    toast("未检测到人脸,可能原因:人脸太小(必须大于最小检测人脸minFaceSize),或者人脸角度太大,人脸不是朝上");
            //    }
            //}
            //        });
            detectManager.start();
        }
Beispiel #4
0
        private void init()
        {
            faceDetectManager = new FaceDetectManager(this);
            // 从系统相机获取图片帧。
            CameraImageSource cameraImageSource = new CameraImageSource(this);

            // 图片越小检测速度越快,闸机场景640 * 480 可以满足需求。实际预览值可能和该值不同。和相机所支持的预览尺寸有关。
            // 可以通过 camera.getParameters().getSupportedPreviewSizes()查看支持列表。
            cameraImageSource.getCameraControl().setPreferredPreviewSize(1280, 720);

            // 设置最小人脸,该值越小,检测距离越远,该值越大,检测性能越好。范围为80-200

            previewView.setMirrored(false);
            // 设置预览
            cameraImageSource.setPreviewView(previewView);
            // 设置图片源
            faceDetectManager.setImageSource(cameraImageSource);
            faceDetectManager.setUseDetect(true);
            textureView.SetOpaque(false);

            // 不需要屏幕自动变黑。
            textureView.KeepScreenOn = true;
            bool isPortrait = Resources.Configuration.Orientation == Android.Content.Res.Orientation.Portrait;

            if (isPortrait)
            {
                previewView.setScaleType(ScaleType.FIT_WIDTH);
                // 相机坚屏模式
                cameraImageSource.getCameraControl().setDisplayOrientation(0);
            }
            else
            {
                previewView.setScaleType(ScaleType.FIT_HEIGHT);
                // 相机横屏模式
                cameraImageSource.getCameraControl().setDisplayOrientation(1);
            }

            setCameraType(cameraImageSource);
        }