从Python2和3读取和写入数据矩阵条形码。

pylibdmtx的Python项目详细描述


https://img.shields.io/badge/python-2.7%2C%203.4%2C%203.5%2C%203.6%2C%203.7-blue.svghttps://badge.fury.io/py/pylibdmtx.svghttps://travis-ci.org/NaturalHistoryMuseum/pylibdmtx.svg?branch=masterhttps://coveralls.io/repos/github/NaturalHistoryMuseum/pylibdmtx/badge.svg?branch=master

使用 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_datamatrixwrite_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的最小值 重新实现pydmtxdecode函数

贡献者

  • Vinicius Kursancew(@kursancew)-条码写入的第一个实现
  • joseph weston(@jbweston)-支持libdmtx0.7.5

许可证

pylibdmtx在mit许可下分发(请参见LICENCE.txt)。 libdmtx共享库是在简化的bsd许可证下分发的 (见libdmtx-LICENCE.txt)。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java获取textview的文本并将其粘贴到另一个上   java ImageIO。write()不保存文件   java H2数据库排序字符串时间戳,格式为yyyyMMdd'T'hh:mm:ss。SSSSSSS'Z'   java匿名类与静态字段   java将一个句子拆分为字符串数组,并保留特殊字符或空格   JavaBIRT报告引擎。计算Javascript表达式时出错   日志表的java MySQL隔离级别读取未提交   java Android调用意图权限   java如何在iText 7中查找文本位置和边界   从Groovy调用Java类主方法时,避免参数数量不正确   java libGDX:在批处理调用stage constructor时,为舞台上的演员绘制纹理作为背景   java randoop可以利用usermade JUnit测试生成测试吗?   java Eclipse工作区将不再显示我的项目