Пример #1
0
        private void setCameraType(CameraImageSource cameraImageSource)
        {
            // TODO 选择使用前置摄像头
            // cameraImageSource.getCameraControl().setCameraFacing(ICameraControl.CAMERA_FACING_FRONT);

            // TODO 选择使用usb摄像头
            cameraImageSource.getCameraControl().setCameraFacing(2);
            // 如果不设置,人脸框会镜像,显示不准
            previewView.getTextureView().ScaleX = -1;

            // TODO 选择使用后置摄像头
            //        cameraImageSource.getCameraControl().setCameraFacing(ICameraControl.CAMERA_FACING_BACK);
            //        previewView.getTextureView().setScaleX(-1);
        }
        private void init()
        {
            Intent intent = getIntent();

            if (intent != null)
            {
                groupId = intent.GetStringExtra("group_id");
            }

            faceDetectManager = new FaceDetectManager(this);
            // 从系统相机获取图片帧。
            CameraImageSource cameraImageSource = new CameraImageSource(this);

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

            // 设置最小人脸,该值越小,检测距离越远,该值越大,检测性能越好。范围为80-200
            FaceSDKManager.getInstance().getFaceDetector().MinFaceSize = (100);
            // FaceSDKManager.getInstance().getFaceDetector().setNumberOfThreads(4);
            // 设置预览
            cameraImageSource.setPreviewView(previewView);
            // 设置图片源
            faceDetectManager.setImageSource(cameraImageSource);
            // 设置人脸过滤角度,角度越小,人脸越正,比对时分数越高
            faceDetectManager.getFaceFilter().setAngle(20);

            textureView.SetOpaque(false);
            // 不需要屏幕自动变黑。
            textureView.setKeepScreenOn(true);

            bool isPortrait = Resources.Configuration.Orientation == Android.Content.Res.Orientation.Portrait;

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

            setCameraType(cameraImageSource);
        }
Пример #3
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);
        }