我打算从图片like this one中解码2D数据矩阵代码(DMC)。
每张图片一个代码。更重要的是,整个过程将在带有Pi NoIR V2相机的Raspberry Pi上运行。相机会拍摄一个对象的图片,然后尝试对其进行解码,如果解码过程不成功或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
现在,我已经尝试过使用libdmtx的pylibdmtx python模块。
我的问题是,该模块无法识别以虚线样式打印DMC的图片。因此,只有方形样式的样式才有效like this one。这是一个问题,因为我们的其他设备(例如Zebra扫描仪)都可以识别并解码DMC,因此X不应如此。
由于我的性能和处理器体系结构(RPi,arm7)确实受到限制,因此我没有其他模块/库可以尝试。
有没有2D数据矩阵解码器库可以解码点状的库?或者我缺少什么?