readBarcode

Обнаружьте и декодируйте 1D или 2D штрихкод в изображении

Описание

пример

msg = readBarcode(I) обнаруживает и декодирует 1D или 2D штрихкод во входном изображении и возвращает сообщение, сопоставленное с тем штрихкодом.

Если входное изображение содержит несколько штрихкодов, readBarcode функция декодирует только первый обнаруженный штрихкод.

msg = readBarcode(I,roi) задает прямоугольную видимую область (ROI), чтобы уменьшать область, в которой функция ищет штрихкод. ROI должен полностью содержаться во входном изображении.

msg = readBarcode(___,format) задает форматы штрихкода, чтобы уменьшать типы штрихкодов, которые ищет функция. Задайте этот аргумент в дополнение к любой из комбинаций входных аргументов в предыдущих синтаксисах.

[msg,detectedFormat,loc] = readBarcode(___) дополнительно возвращает формат, detectedFormat, и местоположение, loc, из обнаруженного штрихкода.

Примеры

свернуть все

Считайте изображение, содержащее штрихкод в рабочую область.

I = imread("barcode1D.jpg");

Обнаружьте штрихкод и декодируйте его сообщение.

msg = readBarcode(I);

Отобразите декодируемое сообщение штрихкода.

disp("Decoded barcode message: " + msg)
Decoded barcode message: 1234567890128

Считайте изображение, содержащее штрихкод в рабочую область.

I = imread("barcode1D.jpg");

Ищите изображение 1D штрихкод, возвращая его сообщение, формат и местоположение.

[msg,detectedFormat,loc] = readBarcode(I,'1D');

Отобразите обнаруженный формат штрихкода.

disp("Barcode format: " + detectedFormat)
Barcode format: EAN-13

Аннотируйте изображение декодируемым сообщением штрихкода.

xyBegin = loc(1,:);
Imsg = insertText(I,xyBegin,msg,'BoxOpacity',1,'FontSize',30);

Вставьте линию, чтобы показать строку скана.

imSize = size(Imsg);
Imsg = insertShape(Imsg,'Line',[1 xyBegin(2) imSize(2) xyBegin(2)],'LineWidth',5);

Отобразите изображение.

imshow(Imsg)

Figure contains an axes. The axes contains an object of type image.

Считайте изображение, содержащее штрихкод.

I = imread("barcodeQR.jpg");

Задайте ROI в изображении, которое содержит штрихкод.

roi = [470, 300, 720, 620];

Ищите штрихкод QR в ROI.

[msg,~,loc] = readBarcode(I,roi,"QR-CODE");

Аннотируйте изображение декодируемым сообщением от обнаруженного штрихкода.

xyText =  loc(2,:);
Imsg = insertText(I,xyText,msg,"BoxOpacity",1,"FontSize",25);

Вставьте красные круги на изображение, чтобы указать на местоположения шаблона средства поиска.

Imsg = insertShape(Imsg, "FilledCircle", [loc, ...
     repmat(10, length(loc), 1)],"Color","red","Opacity",1);

Отобразите изображение.

imshow(Imsg)

Figure contains an axes. The axes contains an object of type image.

Входные параметры

свернуть все

Введите изображение в виде истинного цвета или полутонового изображения.

Необходимая область в виде четырехэлементного вектора-строки из формы [x, y, width, height]. Прямоугольный ROI должен полностью содержаться во входном изображении. [x, y] задает начальную точку для ROI относительно верхнего левого угла изображения.

Если изображение содержит несколько штрихкодов, указывая, что ROI может помочь функции обнаружить конкретный штрихкод. Для получения дополнительной информации смотрите, Локализуют и Чтение Несколько Штрихкодов в Изображении.

Формат штрихкода в виде одной из этих опций. Таблица приводит допустимые форматы штрихкода.

  • 'all' — Используйте эту опцию, чтобы задать все допустимые форматы штрихкода. Если вы не задаете формат, функция использует эту опцию.

  • '1D' — Используйте эту опцию, чтобы задать все допустимые 1D форматы штрихкода.

  • '2D' — Используйте эту опцию, чтобы задать все допустимые 2D форматы штрихкода.

  • Вектор символов или строковый скаляр допустимого формата — Использование эта опция, чтобы задать один формат штрихкода.

  • Массив ячеек из символьных векторов или вектор из строк допустимых форматов — Использование эта опция, чтобы задать несколько форматов штрихкода. Функция приоритизирует свой поиск определенных форматов штрихкода на основе порядка элементов в этом массиве.

Определение формата может уменьшать время выполнения функции путем ограничения поиска штрихкода.

1D Форматы2D Форматы
UPC-AQR-CODE
UPC-EDATA-MATRIX
EAN-8AZTEC
EAN-13PDF-417
CODE-39 
CODE-93 
CODE-128 
CODABAR 
ITF 
RSS-14 
RSS-EXPANDED 

Выходные аргументы

свернуть все

Сообщение штрихкода, возвращенное как строковый скаляр.

Обнаруженный формат штрихкода, возвращенный как строковый скаляр одного из форматов в этой таблице.

1D Форматы2D Форматы
UPC-AQR-CODE
UPC-EDATA-MATRIX
EAN-8AZTEC
EAN-13PDF-417
CODE-39 
CODE-93 
CODE-128 
CODABAR 
ITF 
RSS-14 
RSS-EXPANDED 

Местоположение штрихкода, возвращенного как M-by-2 матрица для 2D штрихкодов или матрица 2 на 2 для 1D штрихкодов. Элементы матрицы представляют местоположения шаблона средства поиска.

Штрихкодloc ЗначениеМестоположения шаблона средства поиска
2DM-by-2 матрица. M представляет количество [x, y] местоположения шаблонов средства поиска.

1DМатрица 2 на 2 формы [x1, y1; x2, y2], где каждая строка представляет местоположение шаблона средства поиска.

Советы

  • Функция обнаруживает только явно видимые штрихкоды.

  • Определение формата может уменьшать время выполнения функции путем ограничения поиска штрихкода.

  • Для шумных изображений с неясными штрихкодами используйте функции предварительной обработки изображений, такой как imsharpen.

  • Функция обнаруживает только горизонтально или вертикально выровненный barcodes.Use imrotate откорректировать плохо выровненные штрихкоды.

Введенный в R2020a