Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как получить тип стиля кодирования QR/штрих-кода с помощью python-qrtools/ZBar?

Автор вопроса: kramer65Ответов: 1

На моем сервере Ubuntu я установил пакет python-qrtools (который использует zbar), используя sudo apt-get install python-qrtools для декодирования изображений QR-кодов и штрих-кодов в Python следующим образом:

>>> qr = qrtools.QR()
>>> qr.decode('the_qrcode_or_barcode_image.jpg')
True
>>> print qr.data
Hello! :)

Это прекрасно работает.

Теперь я хочу сохранить эти данные и восстановить изображение позже. Но проблема в том, что я не знаю, было ли исходное изображение QR-кодом или каким-то штрих-кодом. Я проверил все свойства объекта qr, но ни одно из них, похоже, не дает мне тип стиля кодирования (QR/bar/other).

В этой теме SO описано, что ZBar делает верните тип стиля кодирования, но он дает только пример в Objective-C, плюс я не уверен, действительно ли это ответ на то, что я ищу.

Кто-нибудь знает, как я могу узнать тип стиля кодирования (например, QR-код/BAR-код/другой) в Python (желательно с использованием пакета python-qrtools)? И если не в Python, есть ли какие-нибудь инструменты командной строки Linux, которые могут это узнать? Все советы приветствуются!

pythonobjective-cqr-codezbar

Ответы

Ответ 1 · рейтинг 5 · Padraic Cunningham

Глядя на источник qrtools, я не вижу никакого способа получить тип, но есть zbar python lib, основанный на scan_image примере, код ниже, похоже, делает то, что вы хотите:

import zbar
import Image

scanner = zbar.ImageScanner()

scanner.parse_config('enable')

img = Image.open("br.png").convert('L')
width, height = img.size
stream = zbar.Image(width, height, 'Y800', img.tostring())

scanner.scan(stream)

for symbol in stream:
    print 'decoded', symbol.type, 'symbol', '"%s"' % symbol.data

Используя случайный штрих-код, который я взял с сайта net:

decoded UPCA symbol "123456789012"

Используя этот код QR выводит:

 decoded QRCODE symbol "http://www.reichmann-racing.de"

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы