예제 #1
0
        private async void AddFace()
        {
            if (SelectedImage == -1)
            {
                return;
            }

            if (string.IsNullOrWhiteSpace(UsernameText))
            {
                return;
            }

            var selectedImage = PreviewImages[SelectedImage];

            var addedFaceData = await RecognitionData.InsertFace(selectedImage.Original, selectedImage.Grayframe, UsernameText);

            if (addedFaceData.FaceId != -1)
            {
                ResultText = $"Success: ID {addedFaceData.FaceId}";
                PreviewImages.Clear();
                PreviewHeaderVisible = false;
                UsernameText         = "";
            }
            else
            {
                ResultText = "Error!";
            }

            await Task.Delay(3000);

            ResultText = "";
        }
            private void OnRecognition(IntPtr data)
            {
                /* Custom Marshalling */
                RecognitionData data2 = new RecognitionData();
                data2.timeStamp = Marshal.ReadInt64(data, 0);
                data2.grammar = Marshal.ReadInt32(data, 8);
                data2.duration = Marshal.ReadInt32(data, 12);

                Int64 addr = data.ToInt64() + 16;
                for (int i = 0; i < NBEST_SIZE; i++)
                {
                    Marshal.PtrToStructure(new IntPtr(addr), data2.scores[i]);
                    addr += Marshal.SizeOf(typeof(NBest));
                }
                handler.onRecognition(data2);
            }
        private void OnRecognition(IntPtr data)
        {
            /* Custom Marshalling */
            RecognitionData data2 = new RecognitionData();

            data2.timeStamp = Marshal.ReadInt64(data, 0);
            data2.grammar   = Marshal.ReadInt32(data, 8);
            data2.duration  = Marshal.ReadInt32(data, 12);

            Int64 addr = data.ToInt64() + 16;

            for (int i = 0; i < NBEST_SIZE; i++)
            {
                Marshal.PtrToStructure(new IntPtr(addr), data2.scores[i]);
                addr += Marshal.SizeOf(typeof(NBest));
            }
            handler.onRecognition(data2);
        }
예제 #4
0
        private void RecognizeUser(ref Image <Bgr, byte> original, Image <Gray, byte> grayframe, Rectangle rectangle)
        {
            grayframe.ROI = rectangle;
            var size = Properties.Settings.Default.RecognitionImageSize;

            try
            {
                var id = RecognitionEngine.RecognizeUser(grayframe.Copy().Resize(size, size, Inter.Cubic));
                if (id > 0)
                {
                    var user = RecognitionData.GetUser(id);
                    if (user != null)
                    {
                        original.Draw(user.Username, new Point(rectangle.Left, rectangle.Top - 10), FontFace.HersheyPlain, 2, new Bgr(Color.DarkTurquoise));
                    }
                }
            }
            catch (CvException)
            {
                // ignored
            }
        }