Nano Hash - криптовалюты, майнинг, программирование

ZXing BarcodeReader не декодирует некоторые штрих-коды

Я разрабатываю считыватель штрих-кода с Xamarin.Forms. И я пытаюсь отсканировать изображение на Android-устройстве.

Сначала я выбираю изображение из галереи с помощью Xamarin.Essentials MediaPicker и по пути к этому изображению получаю RGBLuminance с классом Dependency.

Затем я пытаюсь декодировать эту RGBLuminance с помощью метода Decode () класса ZXing BarcodeReaderGeneric.

Приложение успешно декодирует штрих-коды на некоторых изображениях. Однако иногда при декодировании возвращается null. Возможно, я ошибся при преобразовании изображения в Bitmap или создании RGBLuminanceSource.

Я хотел бы узнать, каким должен быть класс, который может декодировать как цветные, черно-белые, так и полутоновые изображения.

        public RGBLuminanceSource GetRGBLuminanceSource(string imagePath)
        {
            
            if (File.Exists(imagePath))
            {
                Android.Graphics.Bitmap bitmap = BitmapFactory.DecodeFile(imagePath);
                List<byte> rgbBytesList = new List<byte>();
                for (int y = 0; y < bitmap.Height; y++)
                {
                    for (int x = 0; x < bitmap.Width; x++)
                    {
                        var c = new Android.Graphics.Color(bitmap.GetPixel(x, y));
                        rgbBytesList.AddRange(new[] { c.A, c.R, c.G, c.B });
                    }
                }
                byte[] rgbBytes = rgbBytesList.ToArray();
                return new RGBLuminanceSource(rgbBytes, bitmap.Width, bitmap.Height, RGBLuminanceSource.BitmapFormat.RGB32);
            }
            return null;
        }

Команда в классе ViewModel:

        public ICommand PickCommand => new Command(PickImage);
        private async void PickImage()
        {
            var pickResult = await MediaPicker.PickPhotoAsync(new MediaPickerOptions
            {
                Title = "Select a barcode."
            });
            var path = pickResult.FullPath;

            var RGBLuminance = DependencyService.Get<ILuminance>().GetRGBLuminanceSource(path);
            var reader = new BarcodeReaderGeneric();
            var result = reader.Decode(RGBLuminance); 
        }

  • У меня нет цветного штрих-кода. Но образец в этом ответе работает с пустым штрих-кодом. Пожалуйста, проверьте аналогичную ветку, которую я делал раньше. stackoverflow.com/questions/59705760/ 16.04.2021

Ответы:


1

Я использую этот код в xamarin.android, и у меня никогда не было проблем с ним:

        var scanner = new MobileBarcodeScanner();
        var result = await scanner.Scan(_context, MobileBarcodeScanningOptions.Default);

Он открывает камеру, пользователь делает снимок штрих-кода, а result.Text содержит отсканированный штрих-код.

16.04.2021
  • Я хочу декодировать изображения, которые я выбрал из галереи. Не с камеры. 16.04.2021
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..