Mobile Vision Searching cameraSource обнаруживает элементы в списке

В настоящее время я пытаюсь написать приложение для Android, в котором пользователь может внести в черный список любые пищевые ингредиенты, которых он или она хочет избежать. Затем пользователь должен иметь возможность отсканировать этикетку и сразу же узнать, найдены ли какие-либо внесенные в черный список ингредиенты посредством распознавания текста.

Я использую cameraSource для обнаружения текста в реальном времени, который, кажется, работает, но только когда на экране присутствует очень мало слов. Когда на экране слишком много слов, он ничего не может найти.

Что происходит не так, когда присутствует большее количество слов?

        private SurfaceView cameraView;
        private TextView textView;
        private CameraSource cameraSource;
        private const int RequestCameraPermissionID = 1001;
        public JavaList<string> userIngredients;
        public ISharedPreferences pref;
        public ISharedPreferencesEditor edit;
        public Bitmap imageBitmap;


        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

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

            cameraView = FindViewById<SurfaceView>(Resource.Id.surface_view);
            textView = FindViewById<TextView>(Resource.Id.text_view);
            pref = Application.Context.GetSharedPreferences("UserPrefs", FileCreationMode.Private);
            edit = pref.Edit();
            var preferences = pref.GetStringSet("UserPrefs", new JavaList<string>());
            userIngredients = new JavaList<string>(preferences);
            var bitmapOptions = new BitmapFactory.Options();

            TextRecognizer textRecognizer = new TextRecognizer.Builder(ApplicationContext).Build();
            if (!textRecognizer.IsOperational)
            {
                Log.Error("Main Activity", "Detector dependancies are not yet available");
            }
            else
            {
                cameraSource = new CameraSource.Builder(ApplicationContext, textRecognizer)
                    .SetFacing(CameraFacing.Back)
                    .SetRequestedFps(2.0f)
                    .SetAutoFocusEnabled(true)
                    .Build();

                cameraView.Holder.AddCallback(this);
                textRecognizer.SetProcessor(this);
            }
        }



        public void SurfaceCreated(ISurfaceHolder holder)
        {
            if (ActivityCompat.CheckSelfPermission(ApplicationContext, Manifest.Permission.Camera) != Android.Content.PM.Permission.Granted)
            {
                //Request Permission
                ActivityCompat.RequestPermissions(this, new string[] {
                    Android.Manifest.Permission.Camera
                }, RequestCameraPermissionID);
                return;
            }
            cameraSource.Start(cameraView.Holder);
        }

        public void SurfaceDestroyed(ISurfaceHolder holder)
        {
            cameraSource.Stop();
        }

        public void ReceiveDetections(Detections detections)
        {
            bool blackListedFound = false;
            SparseArray items = detections.DetectedItems;
            if (items.Size() != 0)
            {
                textView.Post(() =>
                {
                    for (int i = 0; i < items.Size(); ++i)
                    {
                        for (int j = 0; j < userIngredients.Size(); j++)
                        {
                            if (((TextBlock)items.ValueAt(i)).Value.Equals(userIngredients[j]))
                            {
                                blackListedFound = true;
                                textView.Text = "Not reccomended\nIngredient Found: " + userIngredients[j];
                            }
                        }
                    }
                });
            }
            else if (blackListedFound == false)
            textView.Post(() =>
            {
                textView.Text = "No Ingredients found";
            });
        }


    }
}

Вот несколько примеров изображений моей текущей проблемы; Мое меню настроек с добавлением воды в черный список

Вот пример того, как приложение не может найти ингредиент из черного списка (Вода);

0 ответов

Другие вопросы по тегам