Как декодировать пунктирную двумерную матрицу данных в python? - PullRequest
0 голосов
/ 20 марта 2019

Я планирую декодировать двумерные коды матрицы данных (DMC) с картинки, как этот .

Один код на картинку.Более того, все это будет работать на Raspberry Pi с камерой Pi NoIR V2.Камера делает снимок объекта и пытается его декодировать, если процесс декодирования не был успешным или DMC не распознается, тогда она делает то же самое, что и X, а Y.

Вот код:

#!/usr/bin python2
# -*- coding: utf-8 -*-
from picamera import PiCamera
from picamera.array import PiRGBArray
from pylibdmtx.pylibdmtx import decode

cam = PiCamera()
cam.resolution = (1920, 1088,)
cam.color_effects = (128, 128,) 
cam.video_stabilization = True
cam.contrast = 42
cam.brightness = 42

file = '/home/pi/Asztal/DMCScanner/crimg.jpg'        
cam.capture(file)

data = PiRGBArray(cam) 
cam.capture(data, 'rgb')
img = data.array.astype('uint8')
h, w = img.shape[:2]
got = decode((img.tobytes(), w, h), max_count=1, timeout=None)[0]

if got:
    Y
else:
    X

Теперь я попробовал этот pylibdmtx модуль python, который использует libdmtx.

Моя проблема в том, что этот модуль не распознает изображения, на которых напечатан DMCв пунктирном стиле.Так что работают только в квадратном стиле, как этот .Это проблема, поскольку другие наши устройства, такие как сканер Zebra, распознают и декодируют DMC, поэтому дело обстоит иначе.

Поскольку я действительно ограничен в производительности и архитектуре процессора (RPi, arm7), У меня нет другого модуля / библиотеки, чтобы попробовать.

Есть ли какая-либо библиотека декодеров 2D Data Matrix, которая может декодировать точечные?Или мне чего-то не хватает?

...