【问题标题】:Selecting the Data Matrix from a Image and Decoding it从图像中选择数据矩阵并对其进行解码
【发布时间】:2020-06-10 09:25:18
【问题描述】:

我有图片作为附件。我尝试使用下面的代码,它为大多数图像输出正确的值。但是,解码需要很长时间。

import cv2
from pylibdmtx.pylibdmtx import decode
import ctypes  
from PIL import Image
decode(Image.open("1591106831_festo.jpg"))

我相信如果我可以只选择包含数据矩阵的图像的特定部分并将其输入到 pylibdmtx 库中,它可能会更准确和更快。

但目前我无法弄清楚如何使用数据矩阵选择图像部分。你能帮帮我吗?谢谢。

附加 DataMatrix 的预期输出为 (91)4608

【问题讨论】:

    标签: python keras computer-vision datamatrix


    【解决方案1】:

    如下简单使用cv2pylibdmtx怎么样

    import cv2
    from pylibdmtx.pylibdmtx import decode
    
    image = cv2.imread("1591106831_festo.jpg")
    h, w  = image.shape[:2]
    decdd = decode((image[:, :, :1].tobytes(), w, h))
    print(decdd)
    # [Decoded(data=b'(91)4608', rect=Rect(left=650, top=522, width=-82, height=86))]
    

    这可能比您目前手头的更快,因为我们 1)decode 提供了不可猜测的参数并且 2) 提供了 @ 987654328@,表示一个只处理第一层BGR,蓝色的那一层,对于条码来说显然足够了。


    为了比较,decode(Image.open("1591106831_festo.jpg")) 返回
    [Decoded(data=b'(91)4608', rect=Rect(left=650, top=522, width=-82, height=86))]
    

    即完全相同的推论。


    您可以做的就是限制您想要获取的条形码数量,使用 max_count 参数,
    >>> decode(Image.open("1591106831_festo.jpg"), max_count=1)
    [Decoded(data=b'(91)4608', rect=Rect(left=522, top=629, width=86, height=82))]
    

    【讨论】:

    • 嘿,谢谢,它有部分帮助..但是你知道有什么方法可以只选择带有数据矩阵的部分吗?
    • 我刚刚检查了你和我的解决方案,它们的执行时间差不多。
    • 包括 max_count,大大减少了交配时间。谢谢。
    猜你喜欢
    • 2015-10-07
    • 2019-10-04
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    • 2019-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多