从Python2和3读取和写入数据矩阵条形码。
pylibdmtx的Python项目详细描述
使用 libdmtx库。
- 纯Python
- 适用于pil/枕头图像、opencv/numpyndarrays和原始字节
- 解码条形码的位置
- 除了libdmtx库本身之外,没有依赖项
- 在Python2.7和Python3.4到3.7上测试
年长的 pydmtx 包被困在python 2.x-land中。
安装
libdmtxDLLs包含在windows python控制盘中。 在其他操作系统上,您需要安装libdmtx共享 图书馆。
Mac OS X:
brew install libdmtx
Linux:
sudo apt-get install libdmtx0a
安装这个python包装器;使用第二个表单安装 read_datamatrix和write_datamatrix命令行脚本:
pip install pylibdmtx pip install pylibdmtx[scripts]
示例用法
decode函数接受PIL.Image的实例。
>>> from pylibdmtx.pylibdmtx import decode >>> from PIL import Image >>> decode(Image.open('pylibdmtx/tests/datamatrix.png')) [Decoded(data='Stegosaurus', rect=Rect(left=5, top=6, width=96, height=95)), Decoded(data='Plesiosaurus', rect=Rect(left=298, top=6, width=95, height=95))]
它还接受numpy.ndarray的实例,这些实例可能来自加载 使用OpenCV的图像。
>>> import cv2 >>> decode(cv2.imread('pylibdmtx/tests/datamatrix.png')) [Decoded(data='Stegosaurus', rect=Rect(left=5, top=6, width=96, height=95)), Decoded(data='Plesiosaurus', rect=Rect(left=298, top=6, width=95, height=95))]
您还可以提供一个元组(pixels, width, height)
>>> image = cv2.imread('pylibdmtx/tests/datamatrix.png') >>> height, width = image.shape[:2] >>> decode((image.tobytes(), width, height)) [Decoded(data='Stegosaurus', rect=Rect(left=5, top=6, width=96, height=95)), Decoded(data='Plesiosaurus', rect=Rect(left=298, top=6, width=95, height=95))]
encode函数生成包含数据矩阵条形码的图像:
>>> from pylibdmtx.pylibdmtx import encode >>> encoded = encode('hello world') >>> img = Image.frombytes('RGB', (encoded.width, encoded.height), encoded.pixels) >>> img.save('dmtx.png')
Windows错误消息
如果在导入pylibdmtx时看到一个丑陋的ImportError。 你很可能需要Visual C++ Redistributable Packages for Visual Studio 2013窗口。 如果使用64位python,请安装vcredist_x64.exe,如果使用vcredist_x86.exe。 使用32位python。
限制
请随时提交公关来解决这些问题。
- 我用头脑简单的方法把逻辑抄进去 pydmtx'sdecode函数(in pydmtxmodule.c;可能还有更多的libdmtx功能可以有效地 暴露在外
- 我公开了所需的函数、定义、枚举和typedef的最小值 重新实现pydmtx的decode函数
贡献者
- Vinicius Kursancew(@kursancew)-条码写入的第一个实现
- joseph weston(@jbweston)-支持libdmtx0.7.5
许可证
pylibdmtx在mit许可下分发(请参见LICENCE.txt)。 libdmtx共享库是在简化的bsd许可证下分发的 (见libdmtx-LICENCE.txt)。