Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将解码后的数据矩阵写入数据帧_Python_Pandas_Dataframe_Datamatrix - Fatal编程技术网

Python 如何将解码后的数据矩阵写入数据帧

Python 如何将解码后的数据矩阵写入数据帧,python,pandas,dataframe,datamatrix,Python,Pandas,Dataframe,Datamatrix,我试图从一个图像中读取所有数据矩阵,然后写入数据帧。 我可以通过pylibdmtx打印条形码编号和位置,但我不知道如何存储在dataframe中 image = cv2.imread('IMG-4951.jpg') gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY) plt.imshow(gray) ret,thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)

我试图从一个图像中读取所有数据矩阵,然后写入数据帧。 我可以通过pylibdmtx打印条形码编号和位置,但我不知道如何存储在dataframe中

image = cv2.imread('IMG-4951.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)
plt.imshow(gray)
ret,thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
msg = pylibdmtx.decode(thresh)
print(msg)


Output:
[Decoded(data=b'01086995460155972150046789702417240229109LB02199', rect=Rect(left=984, top=1172, width=290, height=287)), Decoded(data=b'01086995460155972154702360250417240229109LB02199', rect=Rect(left=899, top=2242, width=279, height=272))]
“msg”变量存储为带有2个元素的列表,在本例中,当我尝试转换数据帧时,“data”列为空,但“rect”列与上面一样正确<代码>(矩形(左=984,上=1172,宽=290,高=287))

Dataframe如下所示

data      rect
          Rect(left=984, top=1172, width=290, height=287)
          Rect(left=899, top=2242, width=279, height=272)
如何填写数据列或您建议的任何其他方法

我的第二个问题是,这个库看起来很慢。有什么建议可以让它更快吗

提前感谢,

这可能会有所帮助

我使用了这个测试图像

导入包

import cv2
import matplotlib.pyplot as plt
from pylibdmtx.pylibdmtx import decode
import pandas as pd 
使用上面提供的代码

image = cv2.imread('datamatrix.png')
gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)
plt.imshow(gray)
ret,thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
msg = decode(thresh)
print(msg)
我得到这个输出

[Decoded(data=b'Stegosaurus', rect=Rect(left=5, top=6, width=96, height=95)), Decoded(data=b'Plesiosaurus', rect=Rect(left=298, top=6, width=95, height=95))]

要添加到数据框中,我首先填充一个列表来表示我希望数据框的形状

ls_msg = []
for item in msg:
    ls_msg.append([item[0], item[1][0], item[1][1], item[1][2]])
将列表放入数据框中

df_msg = pd.DataFrame(ls_msg)
添加列名

df_msg.columns = ['data', 'left','top','width']
这将生成一个如下所示的数据帧


从未使用过这个软件包之前,它是迷人的安装和发挥

嘿!我试着运行这个代码。这是一个迷人的包!我可以问一下,在尝试从pylibdmtx.pylibdmtx导入解码时,您是如何遇到[无法找到dmtx共享库]问题的。我尝试了这个,因为在尝试存储变量时输出失败。嗨!我解决了我的问题[无法找到dmtx共享库],并提供了一个可能有用的答案。感谢您提供的解决方案,我想问一下,您的系统中的“解码”过程是否很长?只是检查我是否做了错事或遗漏了什么,因为比较条形码处理结果大约需要2分钟。嘿@Tyr,对于特定的图像,它运行得很快,不到5秒