예제 #1
0
        protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
        {
            base.OnActivityResult(requestCode, resultCode, data);

            switch (requestCode)
            {
            case REQUEST_SELECT_IMAGE:
                if (resultCode == Result.Ok)
                {
                    imageUri = data.Data.ToString();

                    bitmap = ContentResolver.LoadSizeLimitedBitmapFromUri(data.Data);

                    if (bitmap != null)
                    {
                        var image = FindViewById <ImageView> (Resource.Id.image);
                        image.SetImageBitmap(bitmap);

                        AddLog($"Image: {imageUri} resized to {bitmap.Width}x{bitmap.Height}");
                    }

                    var faceListAdapter     = new FaceListAdapter(null, null);
                    var list_detected_faces = FindViewById <ListView> (Resource.Id.list_detected_faces);
                    list_detected_faces.Adapter = faceListAdapter;

                    SetInfo("");

                    SetDetectButtonEnabledStatus(true);
                }
                break;
            }
        }
예제 #2
0
        protected async override void OnActivityResult(int requestCode, Result resultCode, Intent data)
        {
            base.OnActivityResult(requestCode, resultCode, data);

            switch (requestCode)
            {
            case REQUEST_SELECT_IMAGE:
                if (resultCode == Result.Ok)
                {
                    detected = false;

                    // If image is selected successfully, set the image URI and bitmap.
                    bitmap = ContentResolver.LoadSizeLimitedBitmapFromUri(data.Data);

                    if (bitmap != null)
                    {
                        // Show the image on screen.
                        var imageView = FindViewById <ImageView> (Resource.Id.image);
                        imageView.SetImageBitmap(bitmap);
                    }

                    // Clear the identification result.
                    var emptyFaceListAdapter = new FaceListAdapter(null, null);
                    var listView             = FindViewById <ListView> (Resource.Id.list_identified_faces);
                    listView.Adapter = emptyFaceListAdapter;

                    // Clear the information panel.
                    SetInfo("");

                    // Start detecting in image.
                    await Detect();
                }
                break;
            }
        }
            public void OnItemClick(AdapterView parent, View view, int position, long id)
            {
                FaceListAdapter faceListAdapter = activity.mTargetFaceListAdapter;

                if (!faceListAdapter.faces[position].FaceId.Equals(activity.mFaceId))
                {
                    activity.mFaceId = faceListAdapter.faces[position].FaceId;

                    ImageView imageView = (ImageView)activity.FindViewById(Resource.Id.image);
                    imageView.SetImageBitmap(faceListAdapter.faceThumbnails[position]);

                    // Clear the result of finding similar faces.
                    GridView similarFaces = (GridView)activity.FindViewById(Resource.Id.similar_faces);
                    activity.mSimilarFaceListAdapter = new SimilarFaceListAdapter(null, activity);
                    similarFaces.Adapter             = activity.mSimilarFaceListAdapter;

                    similarFaces = (GridView)activity.FindViewById(Resource.Id.facial_similar_faces);
                    activity.mSimilarFaceListAdapter = new SimilarFaceListAdapter(null, activity);
                    similarFaces.Adapter             = activity.mSimilarFaceListAdapter;

                    activity.SetInfo("");
                }

                // Show the list of detected face thumbnails.
                ListView listView = (ListView)activity.FindViewById(Resource.Id.list_faces);

                listView.Adapter = faceListAdapter;
            }
        private void SetUiAfterDetectionForSelectImage(Face[] result)
        {
            SetAllButtonsEnabledStatus(true);

            // Show the detailed list of detected faces.
            mTargetFaceListAdapter = new FaceListAdapter(this);
            mTargetFaceListAdapter.AddFaces(result, mTargetBitmap);

            // Show the list of detected face thumbnails.
            ListView listView = (ListView)FindViewById(Resource.Id.list_faces);

            listView.Adapter = mTargetFaceListAdapter;

            // Set the default face ID to the ID of first face, if one or more faces are detected.
            if (mTargetFaceListAdapter.faces.Count != 0)
            {
                mFaceId = mTargetFaceListAdapter.faces[0].FaceId;
                // Show the thumbnail of the default face.
                ImageView imageView = (ImageView)FindViewById(Resource.Id.image);
                imageView.SetImageBitmap(mTargetFaceListAdapter.faceThumbnails[0]);
            }

            RefreshFindSimilarFaceButtonEnabledStatus();

            mTargetBitmap = null;

            // Set the status bar.
            SetDetectionStatus();
        }
        private void InitializeFaceList(int index)
        {
            ListView listView = (ListView)FindViewById(index == 0 ? Resource.Id.list_faces_0 : Resource.Id.list_faces_1);

            listView.ItemClick += (sender, e) =>
            {
                FaceListAdapter faceListAdapter = index == 0 ? mFaceListAdapter0 : mFaceListAdapter1;

                if (!faceListAdapter.faces[e.Position].FaceId.Equals(
                        index == 0 ? mFaceId0 : mFaceId1))
                {
                    if (index == 0)
                    {
                        mFaceId0 = faceListAdapter.faces[e.Position].FaceId;
                    }
                    else
                    {
                        mFaceId1 = faceListAdapter.faces[e.Position].FaceId;
                    }

                    ImageView imageView = (ImageView)FindViewById(index == 0 ? Resource.Id.image_0 : Resource.Id.image_1);
                    imageView.SetImageBitmap(faceListAdapter.faceThumbnails[e.Position]);

                    SetInfo("");
                }

                // Show the list of detected face thumbnails.
                ListView lv = (ListView)FindViewById(index == 0 ? Resource.Id.list_faces_0 : Resource.Id.list_faces_1);
                lv.Adapter = faceListAdapter;
            };
        }
예제 #6
0
        protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
        {
            base.OnActivityResult(requestCode, resultCode, data);
            switch (requestCode)
            {
            case (int)REQUEST_SELECT_IMAGE:
                if (resultCode == Result.Ok)
                {
                    mImageUri = data.Data;
                    mBitmap   = ImageHelper.LoadSizeLimitedBitmapFromUri(mImageUri, this.ContentResolver);
                    if (mBitmap != null)
                    {
                        ImageView image = FindViewById <ImageView>(Resource.Id.image);
                        image.SetImageBitmap(mBitmap);
                        AddLog("Image: " + mImageUri + " resized to " + mBitmap.Width + "x" + mBitmap.Height);
                    }

                    FaceListAdapter faceListAdapter     = new FaceListAdapter(null, this);
                    ListView        list_detected_faces = FindViewById <ListView>(Resource.Id.list_detected_faces);
                    list_detected_faces.Adapter = faceListAdapter;

                    SetInfo("");

                    SetDetectButtonEnabledStatus(true);
                }
                break;

            default:
                break;
            }
        }
예제 #7
0
        private void SetUiAfterDetection(Face[] result, bool succeed, ListView list_detected_faces)
        {
            mProgressDialog.Dismiss();
            SetAllButtonsEnabledStatus(true);
            SetDetectButtonEnabledStatus(false);

            if (succeed)
            {
                string detectionResult;
                if (result != null)
                {
                    detectionResult = result.Length + " face"
                                      + (result.Length != 1 ? "s" : "") + " detected";

                    ImageView image = FindViewById <ImageView>(Resource.Id.image);
                    image.SetImageBitmap(ImageHelper.DrawFaceRectanglesOnBitmap(mBitmap, result, true));
                    FaceListAdapter faceListAdapter = new FaceListAdapter(result, this);
                    list_detected_faces.Adapter = faceListAdapter;
                }
                else
                {
                    detectionResult = "0 face detected";
                }
                SetInfo(detectionResult);
            }

            mImageUri = null;
            mBitmap   = null;
        }
        private void SetUiAfterDetection(Face[] result, int index, bool succeed)
        {
            SetSelectImageButtonEnabledStatus(true, index);

            if (succeed)
            {
                AddLog("Response: Success. Detected " + result.Length + " face(s) in image" + index);
                SetInfo(result.Length + " face" + (result.Length != 1 ? "s" : "") + " detected");

                FaceListAdapter faceListAdapter = new FaceListAdapter(result, index, this);

                if (faceListAdapter.faces.Count != 0)
                {
                    if (index == 0)
                    {
                        mFaceId0 = faceListAdapter.faces[0].FaceId;
                    }
                    else
                    {
                        mFaceId1 = faceListAdapter.faces[0].FaceId;
                    }
                    ImageView imageView = (ImageView)FindViewById(index == 0 ? Resource.Id.image_0 : Resource.Id.image_1);
                    imageView.SetImageBitmap(faceListAdapter.faceThumbnails[0]);
                }

                ListView listView = (ListView)FindViewById(index == 0 ? Resource.Id.list_faces_0 : Resource.Id.list_faces_1);
                listView.Adapter    = faceListAdapter;
                listView.Visibility = ViewStates.Visible;

                if (index == 0)
                {
                    mFaceListAdapter0 = faceListAdapter;
                    mBitmap0          = null;
                }
                else
                {
                    mFaceListAdapter1 = faceListAdapter;
                    mBitmap1          = null;
                }
            }

            if (result != null && result.Length == 0)
            {
                SetInfo("No face detected!");
            }

            if ((index == 0 && mBitmap1 == null) || (index == 1 && mBitmap0 == null) || index == 2)
            {
                mProgressDialog.Dismiss();
            }

            if (mFaceId0 != null && mFaceId1 != null)
            {
                SetVerifyButtonEnabledStatus(true);
            }
        }
예제 #9
0
        async Task ExecuteDetection()
        {
            try
            {
                //progressDialog.Show ();
                //progressDialog.SetMessage ("Detecting...");
                SetInfo("Detecting...");
                AddLog($"Request: Detecting in image {imageUri}");

                var faces = await FaceClient.Shared.DetectFacesInPhoto(
                    () => bitmap.AsJpegStream(),
                    true,
                    FaceAttributeType.Age,
                    FaceAttributeType.Gender,
                    FaceAttributeType.Smile,
                    FaceAttributeType.Glasses,
                    FaceAttributeType.FacialHair,
                    FaceAttributeType.Emotion,
                    FaceAttributeType.HeadPose);

                // Show the result on screen when detection is done.
                var list_detected_faces = FindViewById <ListView> (Resource.Id.list_detected_faces);

                string detectionResult = "0 face detected";

                if (faces?.Count > 0)
                {
                    detectionResult = $"{faces.Count} face{(faces.Count != 1 ? "s" : "")} detected";
                    AddLog($"Response: Success. {detectionResult} in {imageUri}");

                    var image = FindViewById <ImageView> (Resource.Id.image);
                    image.SetImageBitmap(bitmap.DrawFaceRectangles(faces, true));

                    var faceListAdapter = new FaceListAdapter(faces, bitmap);
                    list_detected_faces.Adapter = faceListAdapter;
                }

                SetInfo(detectionResult);
            }
            catch (Exception e)
            {
                AddLog(e.Message);
            }

            //progressDialog.Dismiss ();
            SetAllButtonsEnabledStatus(true);
            SetDetectButtonEnabledStatus(false);

            imageUri = null;
            bitmap.Dispose();
            bitmap = null;
        }
        private void SetUiAfterDetection(Face[] result, bool succeed)
        {
            SetSelectImageButtonEnabledStatus(true);

            if (succeed)
            {
                AddLog("Response: Success. Detected " + result.Length + " face(s) in image");

                SetInfo(result.Length + " face" + (result.Length != 1 ? "s" : "") + " detected");

                // Show the detailed list of detected faces.
                FaceListAdapter faceListAdapter = new FaceListAdapter(result, this);

                // Set the default face ID to the ID of first face, if one or more faces are detected.
                if (faceListAdapter.faces.Count != 0)
                {
                    mFaceId = faceListAdapter.faces[0].FaceId;

                    // Show the thumbnail of the default face.
                    ImageView imageView = (ImageView)FindViewById(Resource.Id.image_0);
                    imageView.SetImageBitmap(faceListAdapter.faceThumbnails[0]);

                    RefreshVerifyButtonEnabledStatus();
                }

                // Show the list of detected face thumbnails.
                ListView listView = (ListView)FindViewById(Resource.Id.list_faces_0);
                listView.Adapter    = faceListAdapter;
                listView.Visibility = ViewStates.Visible;

                // Set the face list adapters and bitmaps.
                mFaceListAdapter = faceListAdapter;
                mBitmap          = null;
            }

            if (result != null && result.Length == 0)
            {
                SetInfo("No face detected!");
            }

            mProgressDialog.Dismiss();

            if (mFaceId != null && mPersonGroupId != null)
            {
                SetVerifyButtonEnabledStatus(true);
            }
        }
        private void ListView_Faces_0_ItemClick(object sender, AdapterView.ItemClickEventArgs e)
        {
            FaceListAdapter faceListAdapter = mFaceListAdapter;

            if (!faceListAdapter.faces[e.Position].FaceId.Equals(mFaceId))
            {
                mFaceId = faceListAdapter.faces[e.Position].FaceId;

                ImageView imageView = (ImageView)FindViewById(Resource.Id.image_0);
                imageView.SetImageBitmap(faceListAdapter.faceThumbnails[e.Position]);

                SetInfo("");
            }

            ListView listView = (ListView)FindViewById(Resource.Id.list_faces_0);

            listView.Adapter = faceListAdapter;
        }
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            // Create your application here
            SetContentView(Resource.Layout.activity_grouping);

            mProgressDialog = new ProgressDialog(this);
            mProgressDialog.SetTitle(Application.Context.GetString(Resource.String.progress_dialog_title));

            add_faces = (Button)FindViewById(Resource.Id.add_faces);
            group     = (Button)FindViewById(Resource.Id.group);
            view_log  = (Button)FindViewById(Resource.Id.view_log);

            mFaceListAdapter = new FaceListAdapter(this);

            SetGroupButtonEnabledStatus(false);

            LogHelper.ClearGroupingLog();
        }
        protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
        {
            base.OnActivityResult(requestCode, resultCode, data);
            switch (requestCode)
            {
            case REQUEST_SELECT_IMAGE:
                if (resultCode == Result.Ok)
                {
                    detected = false;

                    // If image is selected successfully, set the image URI and bitmap.
                    Android.Net.Uri imageUri = data.Data;
                    mBitmap = ImageHelper.LoadSizeLimitedBitmapFromUri(
                        imageUri, this.ContentResolver);
                    if (mBitmap != null)
                    {
                        // Show the image on screen.
                        ImageView imageView = (ImageView)FindViewById(Resource.Id.image);
                        imageView.SetImageBitmap(mBitmap);
                    }

                    // Clear the identification result.
                    FaceListAdapter faceListAdapter = new FaceListAdapter(null, this);
                    ListView        listView        = (ListView)FindViewById(Resource.Id.list_identified_faces);
                    listView.Adapter = faceListAdapter;

                    // Clear the information panel.
                    SetInfo("");

                    // Start detecting in image.
                    Detect();
                }
                break;

            default:
                break;
            }
        }
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            // Create your application here
            SetContentView(Resource.Layout.activity_find_similar_face);

            mFaceListAdapter = new FaceListAdapter(this);

            mProgressDialog = new ProgressDialog(this);
            mProgressDialog.SetTitle(Application.Context.GetString(Resource.String.progress_dialog_title));

            add_faces          = (Button)FindViewById(Resource.Id.add_faces);
            select_image       = (Button)FindViewById(Resource.Id.select_image);
            find_similar_faces = (Button)FindViewById(Resource.Id.find_similar_faces);
            view_log           = (Button)FindViewById(Resource.Id.view_log);

            SetFindSimilarFaceButtonEnabledStatus(false);

            InitializeFaceList();

            LogHelper.ClearFindSimilarFaceLog();
        }
예제 #15
0
        async Task ExecuteDetection()
        {
            try
            {
                progressDialog.Show();
                progressDialog.SetMessage("Detecting...");
                SetInfo("Detecting...");

                var faces = await FaceClient.Shared.DetectFacesInPhoto(() => bitmap.AsJpegStream());

                SetAllButtonsEnabledStatus(true);

                faceListAdapter = new FaceListAdapter(faces, bitmap);
                var listView = FindViewById <ListView> (Resource.Id.list_identified_faces);
                listView.Adapter = faceListAdapter;

                if (faces?.Count > 0)
                {
                    detected = true;
                    SetInfo("Click on the \"Identify\" button to identify the faces in image.");
                }
                else
                {
                    detected = false;
                    SetInfo("No faces detected!");
                }
            }
            catch (Exception e)
            {
                detected = false;
                AddLog(e.Message);
            }

            progressDialog.Dismiss();
            RefreshIdentifyButtonEnabledStatus();
        }
        private async void ExecuteDetection()
        {
            Face[] faces = null;

            mProgressDialog.Show();
            //AddLog("Request: Detecting in image " + mImageUri);

            try
            {
                var faceClient = new FaceClient();
                using (MemoryStream pre_output = new MemoryStream())
                {
                    mBitmap.Compress(Bitmap.CompressFormat.Jpeg, 100, pre_output);

                    using (ByteArrayInputStream inputStream = new ByteArrayInputStream(pre_output.ToArray()))
                    {
                        byte[] arr = new byte[inputStream.Available()];
                        inputStream.Read(arr);
                        var output = new MemoryStream(arr);

                        mProgressDialog.SetMessage("Detecting...");
                        SetInfo("Detecting...");
                        faces = await faceClient.Detect(output, true, false, null);
                    }
                }
            }
            catch (Java.Lang.Exception e)
            {
                AddLog(e.Message);
            }

            RunOnUiThread(() =>
            {
                mProgressDialog.Dismiss();

                SetAllButtonsEnabledStatus(true);

                if (faces != null)
                {
                    // Set the adapter of the ListView which contains the details of detected faces.
                    mFaceListAdapter  = new FaceListAdapter(faces, this);
                    ListView listView = (ListView)FindViewById(Resource.Id.list_identified_faces);
                    listView.Adapter  = mFaceListAdapter;

                    if (faces.Count() == 0)
                    {
                        detected = false;
                        SetInfo("No faces detected!");
                    }
                    else
                    {
                        detected = true;
                        SetInfo("Click on the \"Identify\" button to identify the faces in image.");
                    }
                }
                else
                {
                    detected = false;
                }

                RefreshIdentifyButtonEnabledStatus();
            });
        }