示例#1
0
        public void FrameTestCheckSum5()
        {
            // 10(dec) = 1010 (bin)
            Frame nfra = new Frame.Builder().SetFrame(lst1).SetControlType(new CheckSumControl(), 5).Create();

            Assert.AreEqual(Convert.ToInt32(Functions.GetPartInDec(nfra.GetControlPart().GetList())), 10);
        }
        public string ReadTextFromImage(string file_path)
        {
            var text   = string.Empty;
            var bitMap = BitmapFactory.DecodeFile(file_path);

            var textRecognizer = new TextRecognizer.Builder(Application.Context).Build();

            if (!textRecognizer.IsOperational)
            {
                return(text);
            }

            Frame         frame      = new Frame.Builder().SetBitmap(bitMap).Build();
            SparseArray   items      = textRecognizer.Detect(frame);
            StringBuilder strBuilder = new StringBuilder();

            for (int i = 0; i < items.Size(); i++)
            {
                TextBlock item = (TextBlock)items.ValueAt(i);
                strBuilder.Append(item.Value);
                strBuilder.Append(" ");
            }
            text = strBuilder.ToString();

            return(text);
        }
示例#3
0
        protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
        {
            string result = string.Empty;

            try
            {
                if (requestCode == 100 && resultCode == Result.Ok)
                {
                    if (data != null && data.Extras != null)
                    {
                        Bitmap         imageBitmap    = (Bitmap)data.Extras.Get("data");
                        TextRecognizer textRecognizer = new TextRecognizer.Builder(ApplicationContext).Build();
                        Frame          frame          = new Frame.Builder().SetBitmap(imageBitmap).Build();
                        SparseArray    items          = textRecognizer.Detect(frame);
                        StringBuilder  builder        = new StringBuilder();

                        for (int i = 0; i < items.Size(); i++)
                        {
                            TextBlock item = (TextBlock)items.ValueAt(i);
                            builder.Append(item.Value);
                            builder.Append(" ");
                        }

                        result = builder.ToString();
                    }
                }
            }
            catch (System.Exception e)
            {
                Toast.MakeText(this, e.Message, ToastLength.Long).Show();
            }

            TextData.LastText = result;
            Finish();
        }
示例#4
0
        private void CreateFaceframes(FaceDetector detector, Bitmap b, long timestamp)
        {
            try
            {
                Frame newframe = new Frame.Builder().SetBitmap(b).Build();
                //s.Start();
                SparseArray faces = detector.Detect(newframe); //takes longest
                //s.Stop();

                lock (obj)
                {
                    //if (!_framelist.ContainsKey(index))
                    _framelist.Add(timestamp, faces);
                }
            }
            catch (System.Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
            finally
            {
                b.Recycle();
                //if (VERBOSE)
                //    Log.Info("CreateFaceframes!!!", s.ElapsedMilliseconds.ToString());
            }
        }
        protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data)
        {
            base.OnActivityResult(requestCode, resultCode, data);

            if (requestCode == PickImageID && resultCode == Result.Ok && data != null)
            {
                Android.Net.Uri uri = data.Data;
                cameraSource.Stop();
                surfaceView.Visibility   = ViewStates.Gone;
                selectedimage.Visibility = ViewStates.Visible;
                mainLayout.Visibility    = ViewStates.Gone;
                captureLayout.Visibility = ViewStates.Visible;
                selectedimage.SetImageURI(uri);

                Bitmap currentImage = MediaStore.Images.Media.GetBitmap(this.ContentResolver, uri);
                selectedimage.SetImageBitmap(currentImage);
                Frame         frame         = new Frame.Builder().SetBitmap(currentImage).Build();
                SparseArray   items         = textRecognizer.Detect(frame);
                StringBuilder stringBuilder = new StringBuilder();
                for (int i = 0; i < items.Size(); i++)
                {
                    stringBuilder.Append(((TextBlock)items.ValueAt(i)).Value);
                    stringBuilder.Append(" ");
                }
                textView.Text = stringBuilder.ToString();
            }
        }
示例#6
0
        /// <summary>
        /// Text OCR 기능
        /// </summary>
        /// <param name="bitmap"></param>
        public void TextOCRFunction(Bitmap bitmap)
        {
            TextRecognizer textRecognizer = new TextRecognizer.Builder(ApplicationContext).Build();

            if (!textRecognizer.IsOperational)
            {
                Log.Error("ERROR", "Detector dependencies are not yet available");
            }
            else
            {
                Frame         frame      = new Frame.Builder().SetBitmap(bitmap).Build();
                SparseArray   items      = textRecognizer.Detect(frame);
                StringBuilder strBuilder = new StringBuilder();
                for (int i = 0; i < items.Size(); ++i)
                {
                    TextBlock item = (TextBlock)items.ValueAt(i);
                    strBuilder.Append(item.Value);
                    strBuilder.Append("\n  ");
                }
                if (strBuilder.ToString() != "")
                {
                    tvResult.Text = "  " + strBuilder.ToString();
                    Speak(tvResult.Text);
                }
                else
                {
                    tvResult.Text = "  인식할 수 없습니다.";
                    Speak(tvResult.Text);
                }
            }
        }
        private void _button_Click(object sender, EventArgs e)
        {
            TextRecognizer textRecogniser = new TextRecognizer.Builder(ApplicationContext).Build();

            if (!textRecogniser.IsOperational)
            {
                Log.Error("error", "detecotor dependencies are not yet available");
            }
            else
            {
                try
                {
                    Frame         frame      = new Frame.Builder().SetBitmap(_bitmap).Build();
                    SparseArray   items      = textRecogniser.Detect(frame);
                    StringBuilder strBuilder = new StringBuilder();

                    var size = items.Size();
                    for (int i = 0; i <= items.Size(); ++i)
                    {
                        TextBlock item = (TextBlock)items.ValueAt(i);
                        if (item != null)
                        {
                            strBuilder.Append(item.Value);
                        }
                    }


                    _textViewLabel.Text = strBuilder.ToString();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.StackTrace);
                }
            }
        }
示例#8
0
        public void TestGroupOfBitsCollisionPacket2()
        {
            Package     pak   = new Package();
            List <byte> nlst1 = new List <byte> {
                1, 1, 1, 1, 1, 1, 1, 1, 1, 1
            };
            List <byte> ncon1 = new List <byte> {
                1, 1, 1
            };
            Frame fra1 = new Frame.Builder().SetFrame(nlst1).SetControl(ncon1).Create();

            List <byte> nlst2 = new List <byte> {
                0, 0, 0, 0, 0, 0, 0, 0, 0, 0
            };
            List <byte> ncon2 = new List <byte> {
                0, 0, 0
            };
            Frame fra2 = new Frame.Builder().SetFrame(nlst2).SetControl(ncon2).Create();

            List <byte> pcon2 = new List <byte> {
                0, 0, 0
            };

            pak.AddFrame(fra1);
            pak.AddFrame(fra2);
            pak.GetControlPart().SetControlPart(pcon2);

            BitsCollision BC = new BitsCollision.Builder().SetBasedOnPackage(1).ChangeGroupOfBits(0).Create();

            BC.DoCollision(pak, 10);

            Package     tpak   = new Package();
            List <byte> tnlst1 = new List <byte> {
                1, 1, 1, 1, 1, 1, 1, 1, 1, 1
            };
            List <byte> tncon1 = new List <byte> {
                1, 1, 1
            };
            Frame tfra1 = new Frame.Builder().SetFrame(tnlst1).SetControl(tncon1).Create();

            List <byte> tnlst2 = new List <byte> {
                1, 1, 1, 1, 1, 1, 1, 1, 1, 1
            };
            List <byte> tncon2 = new List <byte> {
                0, 0, 0
            };
            Frame tfra2 = new Frame.Builder().SetFrame(tnlst2).SetControl(tncon2).Create();

            List <byte> tpcon2 = new List <byte> {
                0, 0, 0
            };

            tpak.AddFrame(tfra1);
            tpak.AddFrame(tfra2);
            tpak.GetControlPart().SetControlPart(tpcon2);

            Assert.AreEqual(pak, tpak);
        }
        public void SetFrameCRC2()
        {
            // 10(dec) = 1010 (bin)
            Frame nfra1 = new Frame.Builder().SetFrame(lst1).SetControlType(new CRCControl()).Create();

            //nfra1.ShowControlPart();

            Assert.AreEqual(nfra1.GetControlPart().GetCount(), 4);
        }
        public void CollisionFrameCRC3()
        {
            // 10(dec) = 1010 (bin)
            Frame nfra1 = new Frame.Builder().SetFrame(lst1).SetControlType(new CRCControl(), 123298).Create();

            //nfra1.ShowControlPart();


            Assert.AreEqual(nfra1.CheckFrame(), 0);
        }
示例#11
0
        private void ProcessCameraPicture()
        {
            Bitmap bitmap = DecodeBitmapUri(this, imageUri);

            if (detector.IsOperational && bitmap != null)
            {
                editedBitmap = Bitmap.CreateBitmap(bitmap.Width, bitmap
                                                   .Height, bitmap.GetConfig());
                float scale = Resources.DisplayMetrics.Density;
                Paint paint = new Paint(PaintFlags.AntiAlias);
                paint.Color    = Color.Green;
                paint.TextSize = (int)(16 * scale);
                paint.SetShadowLayer(1f, 0f, 1f, Color.White);
                paint.SetStyle(Paint.Style.Stroke);
                paint.StrokeWidth = 6f;
                Canvas canvas = new Canvas(editedBitmap);
                canvas.DrawBitmap(bitmap, 0, 0, paint);
                Frame       frame = new Frame.Builder().SetBitmap(editedBitmap).Build();
                SparseArray faces = detector.Detect(frame);
                string      text  = "";
                for (int index = 0; index < faces.Size(); ++index)
                {
                    Face face = faces.ValueAt(index) as Face;
                    canvas.DrawRect(
                        face.Position.X,
                        face.Position.Y,
                        face.Position.X + face.Width,
                        face.Position.Y + face.Height, paint);             //CREA EL RECUADRO
                    text += "Cara " + (index + 1) + "\n";
                    text += "Probilidad de una sonrisa:" + " " + face.IsSmilingProbability * 100 + "\n";
                    text += "Probilidad que el ojo izquierdo este abierto : " + " " + face.IsLeftEyeOpenProbability * 100 + "\n";
                    text += "Probilidad que el ojo derecho este abierto: " + " " + face.IsRightEyeOpenProbability * 100 + "\n";
                    foreach (Landmark landmark in face.Landmarks)
                    {
                        int cx = (int)(landmark.Position.X);
                        int cy = (int)(landmark.Position.Y);
                        canvas.DrawCircle(cx, cy, 8, paint); // CREA EL CIRCULO
                    }
                }
                if (faces.Size() == 0)
                {
                    txtDescription.Text = "Scaneo fallido";
                }
                else
                {
                    _imageView.SetImageBitmap(editedBitmap);
                    text += "\n\n" + "Numero de caras detectadas: " + " " + faces.Size().ToString() + "\n\n";
                }
                txtDescription.Text = text;
            }
            else
            {
                txtDescription.Text = "No se pudo configurar el detector!";
            }
        }
示例#12
0
        public void PackageTestCheckSum3()
        {
            // 10(dec) = 1010 (bin)
            Frame   nfra1 = new Frame.Builder().SetFrame(lst1).SetControlType(new CheckSumControl(), 4).Create();
            Package pak   = new Package();

            pak.AddFrame(nfra1);
            pak.AddFrame(nfra1);
            pak.SetControlType(new CheckSumControl());
            pak.SetControlPartByType(1230);

            Assert.AreEqual(Convert.ToInt32(Functions.GetPartInDec(pak.GetControlPart().GetList())), 20);
        }
        public void SetCRCPackage2()
        {
            // 10(dec) = 1010 (bin)
            Frame   nfra1 = new Frame.Builder().SetFrame(lst1).SetControlType(new CRCControl()).Create();
            Package pak   = new Package();

            pak.AddFrame(nfra1);
            pak.AddFrame(nfra1);
            pak.SetControlType(new CRCControl());
            pak.SetControlPartByType();
            pak.ShowControlPart();

            Assert.AreEqual(pak.GetControlPart().GetCount(), 5);
        }
        public void BitsCollisionTest1()
        {
            List <byte> nlst = new List <byte> {
                1, 1, 1, 1, 0, 1, 1, 1, 1, 0
            };
            Frame         fra = new Frame.Builder().SetFrame(nlst).SetControl(5).Create();
            BitsCollision BC  = new BitsCollision.Builder().SetBasedOnFrame().ChangeGroupOfBits(0).Create();

            BC.DoCollision(fra, 10);
            List <byte> tnlst = new List <byte> {
                0, 0, 0, 0, 1, 0, 0, 0, 0, 1
            };
            Frame tfra = new Frame.Builder().SetFrame(tnlst).SetControl(5).Create();

            Assert.AreEqual(fra, tfra);
        }
示例#15
0
        private async Task <string> GetTextFromImageAsync(Bitmap image)
        {
            var task = Task.Run(() =>
            {
                var frame            = new Frame.Builder().SetBitmap(image).Build();
                var items            = textRecognizer.Detect(frame);
                var ocrResultBuilder = new StringBuilder();
                for (var i = 0; i < items.Size(); i++)
                {
                    var item = (TextBlock)items.ValueAt(i);
                    ocrResultBuilder.Append(item.Value);
                    ocrResultBuilder.Append(" ");
                }
                var ocrResult = ocrResultBuilder.ToString();
                return(ocrResult);
            });

            return(await task);
        }
示例#16
0
        private void BtnProcess_Click(object sender, System.EventArgs e)
        {
            TextRecognizer txtRecognizer = new TextRecognizer.Builder(ApplicationContext).Build();

            if (!txtRecognizer.IsOperational)
            {
                Log.Error("Error", "Detector dependencies are not yet available");
            }
            else
            {
                Frame         frame      = new Frame.Builder().SetBitmap(bitmap).Build();
                SparseArray   items      = txtRecognizer.Detect(frame);
                StringBuilder strBuilder = new StringBuilder();
                for (int i = 0; i < items.Size(); i++)
                {
                    TextBlock item = (TextBlock)items.ValueAt(i);
                    strBuilder.Append(item.Value);
                    strBuilder.Append("/");
                }
                txtView.Text = strBuilder.ToString();
            }
        }
示例#17
0
        private void BtnGetTextOnClick(object sender, EventArgs e)
        {
            txtRecognizer = new TextRecognizer.Builder(ApplicationContext).Build();
            if (!txtRecognizer.IsOperational)
            {
                txt_text.Text = "Error";
            }
            else
            {
                Frame         fr        = new Frame.Builder().SetBitmap(bitmap1).Build();
                SparseArray   items     = txtRecognizer.Detect(fr);
                StringBuilder stBuilder = new StringBuilder();
                for (int i = 0; i < items.Size(); i++)
                {
                    TextBlock item = (TextBlock)items.ValueAt(i);
                    stBuilder.Append(item.Value);
                    stBuilder.Append("\n");
                }

                txt_text.Text = stBuilder.ToString();
            }
        }
示例#18
0
 private void Ler(object sender, EventArgs e)
 {
     if (bitmap != null)
     {
         if (!textRecognizer.IsOperational)
         {
         }
         else
         {
             Frame         frame = new Frame.Builder().SetBitmap(bitmap).Build();
             var           items = textRecognizer.Detect(frame);
             StringBuilder sb    = new StringBuilder();
             for (int i = 0; i < items.Size(); i++)
             {
                 var textBlock = items.ValueAt(i) as TextBlock;
                 sb.Append(textBlock.Value);
                 sb.Append("\n");
             }
             txt.Text = sb.ToString();
         }
     }
 }
示例#19
0
        private string TextRecognition(Bitmap bitmap)
        {
            TextRecognizer textrec = new TextRecognizer.Builder(context).Build();
            StringBuilder  builder = new StringBuilder();

            if (!textrec.IsOperational)
            {
                Log.Error("Error", "Detector dependencies are not yet available");
            }
            else
            {
                Frame       frame = new Frame.Builder().SetBitmap(bitmap).Build();
                SparseArray items = textrec.Detect(frame);
                for (int i = 0; i < items.Size(); ++i)
                {
                    TextBlock text = (TextBlock)items.ValueAt(i);
                    builder.Append(text.Value);
                    builder.Append("\n");
                }
            }

            return(builder.ToString());
        }
        private void DetectFace()
        {
            OnboardingActivity.ShowProgressDialog();
            try
            {
                FaceDetector detector = new FaceDetector.Builder(Context)
                                        .SetMode(FaceDetectionMode.Accurate)
                                        .SetClassificationType(ClassificationType.All)
                                        .SetLandmarkType(LandmarkDetectionType.All)
                                        .SetProminentFaceOnly(true)
                                        .SetTrackingEnabled(false)
                                        .Build();

                if (!detector.IsOperational)
                {
                    //Handle contingency
                }
                else
                {
                    Frame frame = new Frame.Builder()
                                  .SetBitmap(bitmap)
                                  .Build();

                    var faces = detector.Detect(frame);
                    detector.Release();
                    DetectedResponse(bitmap, faces);
                }


                SaveImage();
            }
            catch (Exception e)
            {
                OnboardingActivity.CloseProgressDialog();
                OnboardingActivity.ShowErrorDialog(e.Message);
            }
        }
示例#21
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);

            imageview  = FindViewById <ImageView>(Resource.Id.image_view);
            btnProcess = FindViewById <Button>(Resource.Id.btnProcess);
            txtView    = FindViewById <TextView>(Resource.Id.txtView);

            Bitmap bitmap = BitmapFactory.DecodeResource(ApplicationContext.Resources, Resource.Drawable.csharpcorner);

            imageview.SetImageBitmap(bitmap);

            btnProcess.Click += delegate
            {
                TextRecognizer txtRecognizer = new TextRecognizer.Builder(ApplicationContext).Build();
                if (!txtRecognizer.IsOperational)
                {
                    Log.Error("Error", "Detector dependencies are not yet available");
                }
                else
                {
                    Frame         frame      = new Frame.Builder().SetBitmap(bitmap).Build();
                    SparseArray   items      = txtRecognizer.Detect(frame);
                    StringBuilder strBuilder = new StringBuilder();
                    for (int i = 0; i < items.Size(); i++)
                    {
                        TextBlock item = (TextBlock)items.ValueAt(i);
                        strBuilder.Append(item.Value);
                        strBuilder.Append("/");
                    }
                    txtView.Text = strBuilder.ToString();
                }
            };
        }
        public void RandomCollision1()
        {
            BitsCollision BC  = new BitsCollision.Builder().SetBasedOnPackage().SetRandomCollision().Create();
            Package       pak = new Package();

            List <byte> lst1 = new List <byte> {
                0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
            };
            List <byte> con1 = new List <byte> {
                0, 0, 0, 0
            };

            List <byte> lst2 = new List <byte> {
                0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
            };
            List <byte> con2 = new List <byte> {
                0, 0, 0, 0
            };

            List <byte> lst3 = new List <byte> {
                0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
            };
            List <byte> con3 = new List <byte> {
                0, 0, 0, 0
            };
            Frame fra1 = new Frame.Builder().SetFrame(lst1).SetControl(con1).Create();
            Frame fra2 = new Frame.Builder().SetFrame(lst2).SetControl(con2).Create();
            Frame fra3 = new Frame.Builder().SetFrame(lst3).SetControl(con3).Create();

            pak.AddFrame(fra1);
            pak.AddFrame(fra2);
            pak.AddFrame(fra3);
            pak.GetControlPart().SetControlPart(10);

            Package tpak = new Package();

            List <byte> tlst1 = new List <byte> {
                0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
            };
            List <byte> tcon1 = new List <byte> {
                0, 0, 0, 0
            };

            List <byte> tlst2 = new List <byte> {
                0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
            };
            List <byte> tcon2 = new List <byte> {
                0, 0, 0, 0
            };

            List <byte> tlst3 = new List <byte> {
                0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
            };
            List <byte> tcon3 = new List <byte> {
                0, 0, 0, 0
            };
            Frame tfra1 = new Frame.Builder().SetFrame(tlst1).SetControl(tcon1).Create();
            Frame tfra2 = new Frame.Builder().SetFrame(tlst2).SetControl(tcon2).Create();
            Frame tfra3 = new Frame.Builder().SetFrame(tlst3).SetControl(tcon3).Create();

            tpak.AddFrame(tfra1);
            tpak.AddFrame(tfra2);
            tpak.AddFrame(tfra3);
            tpak.GetControlPart().SetControlPart(10);


            BC.DoCollision(pak, 10);



            Assert.AreEqual(Check(ref pak, ref tpak), 10);
        }
示例#23
0
        private void CropAndParse()
        {
            MainActivity.DetectedMotoModel = "";
            MainActivity.DetectedPlate     = "";

            if (!txtRecognizer.IsOperational)
            {
                // Log.Error("Error", "Detector dependencies are not yet available");
            }
            else
            {
                var maxscore = MainActivity.PlateAndMotoStats.Scores.Max();

                if (maxscore > MainActivity.SCORE_THRESHOLD)
                {
                    var i0     = MainActivity.PlateAndMotoStats.Scores.ToList().IndexOf(maxscore);
                    var bboxes = MainActivity.PlateAndMotoStats.BoundingBoxes.ToList();

                    var ymin = bboxes[i0 * 4 + 0] * 300;
                    var xmin = bboxes[i0 * 4 + 1] * 300;
                    var ymax = bboxes[i0 * 4 + 2] * 300;
                    var xmax = bboxes[i0 * 4 + 3] * 300;

                    if (xmin < 0)
                    {
                        xmin = 0;
                    }
                    if (ymin < 0)
                    {
                        ymin = 0;
                    }
                    if (xmax > 300)
                    {
                        xmax = 300;
                    }
                    if (ymax > 300)
                    {
                        ymax = 300;
                    }

                    var w = xmax - xmin;
                    var h = ymax - ymin;

                    using (var builder = new Frame.Builder())
                    {
                        var cfg = Android.Graphics.Bitmap.Config.Argb8888;
                        using (var bmp = Android.Graphics.Bitmap.CreateBitmap(CopyColorsToArray(imgptr), 300, 300, cfg))
                        {
                            using (var bmpc = Android.Graphics.Bitmap.CreateBitmap(bmp, (int)xmin, (int)ymin, (int)(w), (int)(h)))
                            {
                                if (previewbmp != null)
                                {
                                    previewbmp.Dispose();
                                    previewbmp = null;
                                }
                                previewbmp = bmpc.ToSKBitmap().ToBitmap();
                                var frame      = builder.SetBitmap(bmpc).Build();
                                var items      = txtRecognizer.Detect(frame);
                                var strBuilder = new StringBuilder();
                                var plate      = "";
                                for (int i = 0; i < items.Size(); i++)
                                {
                                    var item = (TextBlock)items.ValueAt(i);
                                    var str  = item.Value.Replace('\n', ' ');
                                    plate = str;
                                    strBuilder.Append("i = " + i + ": " + str + "|");
                                    if (i > 0)
                                    {
                                        break;
                                    }
                                }
                                plate = ParsePlate(plate);
                                Console.WriteLine(plate);
                                if (CheckIsValidPlate(plate))
                                {
                                    MainActivity.DetectedPlate = plate;
                                    MainActivity.context.RunOnUiThread(() =>
                                    {
                                        var imgView = MainActivity.context.FindViewById <ImageView>(Resource.Id.imageViewPlatePreview);
                                        imgView.SetImageBitmap(previewbmp);
                                        var txtView  = MainActivity.context.FindViewById <TextView>(Resource.Id.txtObjID);
                                        txtView.Text = "Placa Detectada: " + plate + " (" + (maxscore * 100).ToString("N2") + "%)";
                                    });
                                    if (MainActivity.SavedDataStore.PlateNumbers.Contains(plate))
                                    {
                                        Xamarin.Essentials.Vibration.Vibrate(2000);
                                        StartMedia("warning.mp3");
                                        MainActivity.context.RunOnUiThread(() =>
                                        {
                                            var layout = MainActivity.context.FindViewById <LinearLayout>(Resource.Id.linearLayoutLabelPanel);
                                            layout.SetBackgroundColor(Android.Graphics.Color.ParseColor("#89ff0000"));
                                            var txtView = MainActivity.context.FindViewById <TextView>(Resource.Id.txtObjID);
                                            txtView.SetTextColor(Android.Graphics.Color.Black);
                                            var imgwarning        = MainActivity.context.FindViewById <ImageButton>(Resource.Id.imageButtonWarning);
                                            imgwarning.Visibility = Android.Views.ViewStates.Visible;
                                        });
                                    }
                                    else
                                    {
                                        MainActivity.context.RunOnUiThread(() =>
                                        {
                                            var layout = MainActivity.context.FindViewById <LinearLayout>(Resource.Id.linearLayoutLabelPanel);
                                            layout.SetBackgroundColor(Android.Graphics.Color.ParseColor("#bc000000"));
                                            var txtView = MainActivity.context.FindViewById <TextView>(Resource.Id.txtObjID);
                                            if (maxscore < 0.7)
                                            {
                                                txtView.SetTextColor(Android.Graphics.Color.Red);
                                            }
                                            else if (maxscore < 0.85)
                                            {
                                                txtView.SetTextColor(Android.Graphics.Color.Yellow);
                                            }
                                            else
                                            {
                                                txtView.SetTextColor(Android.Graphics.Color.LightGreen);
                                            }
                                        });
                                        if (MainActivity.SavedDataStore.Vibrate)
                                        {
                                            Xamarin.Essentials.Vibration.Vibrate(200.0);
                                        }
                                        if (MainActivity.SavedDataStore.PlaySound)
                                        {
                                            StartMedia("pop.m4a");
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
示例#24
0
        protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data)
        {
            if (requestCode == PHOTO_REQUEST && resultCode == Result.Ok)
            {
                LaunchMediaScanIntent();
                try
                {
                    Bitmap bitmap = DecodeBitmapUri(ApplicationContext, imageUri);
                    if (detector.IsOperational && bitmap != null)
                    {
                        Frame         frame      = new Frame.Builder().SetBitmap(bitmap).Build();
                        SparseArray   textBlocks = detector.Detect(frame);
                        System.String blocks     = "";
                        System.String lines      = "";
                        System.String words      = "";
                        var           regexMoney = new Regex(@"\$ ?([0-9]{1,3},([0-9]{3},)*[0-9]{3}|[0-9]+)(.[0-9][0-9])?$*");
                        for (int index = 0; index < textBlocks.Size(); index++)
                        {
                            //extract scanned text blocks here
                            TextBlock tBlock = (TextBlock)textBlocks.ValueAt(index);
                            blocks = blocks + tBlock.Value + " " + "\n";
                            var   text  = Regex.Replace(blocks.ToString(), "[A-Za-z ]", " ");
                            Match match = regexMoney.Match(text);
                            if (match.Success)
                            {
                                scanResults.Text = match.Value;
                                break;
                            }
                            else
                            {
                                scanResults.Text = "No Price.";
                            }

                            //    foreach (IText line in tBlock.Components)
                            //    {
                            //        //extract scanned text lines here
                            //        lines = lines + line.Value + "\n";
                            //        foreach (IText element in line.Components)
                            //        {
                            //            //extract scanned text words here
                            //            words = words + element.Value + ", ";
                            //        }
                            //    }
                            //}
                            //if (textBlocks.Size() == 0)
                            //{
                            //    scanResults.Text = "Scan Failed: Found nothing to scan";
                            //}
                            //else
                            //{



                            //    scanResults.Text = "Assim funcaaaaaaaaaaa";
                            //    //scanResults.Text = scanResults.Text + "Blocks: " + "\n";
                            //    //scanResults.Text = scanResults.Text + blocks + "\n";
                            //    //scanResults.Text = scanResults.Text + "---------" + "\n";
                            //    //scanResults.Text = scanResults.Text + "Lines: " + "\n";
                            //    //scanResults.Text = scanResults.Text + lines + "\n";
                            //    //scanResults.Text = scanResults.Text + "---------" + "\n";
                            //    //scanResults.Text = scanResults.Text + "Words: " + "\n";
                            //    //scanResults.Text = scanResults.Text + words + "\n";
                            //    //scanResults.Text = scanResults.Text + "---------" + "\n";
                            //}
                        }
                        //else
                        //{
                        //    scanResults.Text = "Could not set up the detector!";
                        //}
                    }
                }
                catch (System.Exception e)
                {
                    Log.Error("OnActivityResult", e.StackTrace);
                }
            }
        }
示例#25
0
        public static View getProcessView(View givenView, Android.Content.Res.Resources Resources)
        {
            faceImage = (ImageView)givenView.FindViewById(Resource.Id.ImageViewFace);
            if (faceBitmap == null)
            {
                faceBitmap = BitmapFactory.DecodeResource(Resources, Resource.Drawable.memo);
                faceBitmap = changeBitmapSize(faceBitmap, 1500);
                faceImage.SetImageBitmap(faceBitmap);
                tempBitmap = Bitmap.CreateBitmap(faceBitmap.Width, faceBitmap.Height, Bitmap.Config.Rgb565);
                canvas     = new Canvas(tempBitmap);
                canvas.DrawBitmap(faceBitmap, 0, 0, null);
            }
            faceImage.SetImageDrawable(new BitmapDrawable(Resources, tempBitmap));
            if (flowers == null)
            {
                flowers = BitmapFactory.DecodeResource(Resources, Resource.Drawable.flowers);
            }
            if (goggles == null)
            {
                goggles = BitmapFactory.DecodeResource(Resources, Resource.Drawable.glass3);
            }
            if (smoke == null)
            {
                smoke = BitmapFactory.DecodeResource(Resources, Resource.Drawable.cigarette);
            }
            buttonProcess = (Button)givenView.FindViewById(Resource.Id.buttonProcess);
            buttonClear   = (Button)givenView.FindViewById(Resource.Id.buttonClear);
            buttonSave    = (ImageButton)givenView.FindViewById(Resource.Id.buttonSave);
            AlertDialog.Builder builder = new AlertDialog.Builder(givenView.Context)
                                          .SetTitle("Save the image")
                                          .SetMessage("Are you sure to save?")
                                          .SetPositiveButton("Yes", (senderAlert, args) => {
                saveImage();
                if (isCompressSuccessful)
                {
                    Toast.MakeText(givenView.Context, "Successfuly saved!", ToastLength.Short).Show();
                }
                else
                {
                    Toast.MakeText(givenView.Context, "Failed!", ToastLength.Short).Show();
                }
            })
                                          .SetNegativeButton("No", (senderAlert, args) => {});
            buttonProcess.Click += delegate
            {
                positions.Clear();
                FaceDetector faceDetector = new FaceDetector.Builder(Android.App.Application.Context)
                                            .SetTrackingEnabled(true)
                                            .SetLandmarkType(LandmarkDetectionType.All)
                                            .SetMode(FaceDetectionMode.Fast)
                                            .Build();

                if (!faceDetector.IsOperational)
                {
                    Toast.MakeText(givenView.Context, "Error about faceDetector.", ToastLength.Long);
                    return;
                }
                Frame       frame       = new Frame.Builder().SetBitmap(faceBitmap).Build();
                SparseArray sparseArray = faceDetector.Detect(frame);
                for (int i = 0; i < sparseArray.Size(); i++)
                {
                    Face face = (Face)sparseArray.ValueAt(i);
                    DetectLandMarks(face);
                }
                ;
                int leftEyeX  = positions.Find(x => x.id == "leftEye").positionX;
                int rightEyeX = positions.Find(x => x.id == "rightEye").positionX;
                int rightEyeY = positions.Find(x => x.id == "rightEye").positionY;
                int eyeWidth  = leftEyeX - rightEyeX;


                goggles = changeBitmapSize(goggles, eyeWidth * 2);
                int glassScaleHeight = goggles.GetScaledHeight(canvas);
                canvas.DrawBitmap(goggles, rightEyeX - (eyeWidth / 2) + 5, rightEyeY - (glassScaleHeight / 2) - 2, null);

                flowers = changeBitmapSize(flowers, eyeWidth * 2);
                int flowersScaleWidth  = flowers.GetScaledWidth(canvas);
                int mouthY             = positions.Find(x => x.id == "bottomMouth").positionY;
                int noseX              = positions.Find(x => x.id == "nose").positionX;
                int eyeMouthDifference = mouthY - rightEyeY;
                canvas.DrawBitmap(flowers, noseX - (flowersScaleWidth / 2), rightEyeY - (glassScaleHeight / 2) - eyeMouthDifference, null);

                smoke = changeBitmapSize(smoke, eyeWidth * 2);
                int rightMouthX         = positions.Find(x => x.id == "rightMouth").positionX;
                int rightMouthY         = positions.Find(x => x.id == "rightMouth").positionY;
                int cigaretteScaleWidth = smoke.GetScaledWidth(canvas);
                canvas.DrawBitmap(smoke, rightMouthX - (cigaretteScaleWidth - (cigaretteScaleWidth / 4)), rightEyeY - (glassScaleHeight / 2) + (eyeMouthDifference - (eyeMouthDifference / 8) - (eyeMouthDifference / 8)), null);

                faceImage.SetImageDrawable(new BitmapDrawable(Resources, tempBitmap));
            };


            buttonClear.Click += delegate
            {
                clearCanvas();
            };

            buttonSave.Click += delegate
            {
                var myCustomDialog = builder.Create();
                myCustomDialog.Show();
            };

            var gridView4 = givenView.FindViewById <GridView>(Resource.Id.gridView4);

            gridView4.Adapter    = new Adapters.GridviewAdapters.peopleGridviewAdapter(givenView.Context);
            gridView4.ItemClick += delegate(object sender, AdapterView.ItemClickEventArgs args)
            {
                int id = (int)args.Id;
                faceBitmap = BitmapFactory.DecodeResource(Resources, id);
                faceBitmap = changeBitmapSize(faceBitmap, 1500);
                faceImage.SetImageBitmap(faceBitmap);
                tempBitmap = Bitmap.CreateBitmap(faceBitmap.Width, faceBitmap.Height, Bitmap.Config.Rgb565);
                canvas     = new Canvas(tempBitmap);
                canvas.DrawBitmap(faceBitmap, 0, 0, null);
            };
            return(givenView);
        }
示例#26
0
        public void FrameTestCheckSum2()
        {
            Frame nfra = new Frame.Builder().SetFrame(lst2).SetControlType(new CheckSumControl()).Create();

            Assert.AreEqual(Convert.ToInt32(Functions.GetPartInDec(nfra.GetControlPart().GetList())), 4);
        }
示例#27
0
        public void FrameTestCheckSum1()
        {
            Frame nfra = new Frame.Builder().SetFrame(lst0).SetControlType(new CheckSumControl()).Create();

            Assert.AreEqual(nfra.GetControlPart().GetList().Sum(x => Convert.ToInt32(x)), 0);
        }