Есть ли какая-либо библиотека java для считывания штрих-кодов vin-номеров с картинки?
Я создаю приложение для чтения штрих-кодов VIN-номеров с помощью камеры с телефона Android. Я не знаю, как считывать штрих-коды с изображения, полученного с камеры. (Т.е.) Есть ли какой-либо класс для чтения штрих-кода в формате VIN-номера. пробовал ZXING и другие библиотеки бесполезны для меня. Спасибо
Примечание. Я попытался выполнить поиск в DDG.gg и Stackru, но не нашел правильного решения.
3 ответа
Согласно этой теме в коде Google, ZXING должен поддерживать его. Говорят, проблема может быть связана с разрешением камеры. И они упоминают "auqoniq VIN сканер", который, кажется, приложение для Android на основе ZXING.
Я просто интегрировал zxing в свое приложение как библиотеку и получил приложение для правильного сканирования и декодирования VIN. Я даже изменил маску, чтобы расширить доступную область сканирования.
Проблема определенно в разрешении камеры. Большой, четкий скан VINS без заминки. Дрянной винс нет.
Я делаю поле VIN доступным для ручного ввода, если оно не сканируется. Не забудьте запустить метод контрольной цифры, чтобы убедиться, что это действительный VIN.
Я нашел один, который я могу использовать здесь: http://introcs.cs.princeton.edu/java/31datatype/VIN.java.html
Я успешно использовал исходный код zxing для декодирования в действительные строки VIN и кодирования строк VIN обратно в штрих-коды через намерение (с небольшой помощью).
Вот ключ -
Интегрируйте исходный код zxing в библиотеку. Вот пошаговая ссылка:
Обратите внимание, что здесь также есть хорошее обсуждение того, почему это не должно быть сделано с точки зрения разработчика, но код является открытым для свободного использования, и нам нужно изменить его таким образом, который в настоящее время нельзя сделать с помощью намерения. Итак, мы идем.
В вашем проекте вызывайте zxing через намерение (так, как они рекомендуют); уточнить
intent.putExtra("SCAN_MODE","ONE_D_MODE");
На самом деле у меня все получилось (как с этой строкой, так и без нее), но это зависит от вас, если вы увидите лучшие результаты, в том числе. Я обычно получаю VIN для сканирования менее чем за 1/4 секунды фокуса, как только он в кадре.
Разрешение предварительного просмотра имеет значение, так как предварительный просмотр камеры отправляет кадры декодеру для поиска действительного штрих-кода.
так что... в CameraConfigurationManager.java укажите больший
MAX_PREVIEW_PIXELS
(это не превышает вашего разрешения экрана). Я использовал "1024 * 600" - разрешение моих устройств. Это может занять некоторое время.в CameraManager.java измените прямоугольник кадрирования, чтобы увеличить размер большего штрих-кода, с помощью
private static final int MAX_FRAME_WIDTH = screenpixelsinteger;
у меня 1000.в
public Rect getFramingRect() {
, редактироватьint width
быть= screenResolution.x * 1
(или же* nothing
), вместо* 3 / 4
, Это расширит прямоугольник кадрирования до ширины экрана, но не ширеMAX_FRAME_WIDTH
указано выше (оно будет зажато, если MFW ниже).
Наконец, СКАН!
Я не верю, что отредактировал другие переменные, но если я обнаружу, что сделал это, я обновлю этот ответ.