繁体   English   中英

如何将数字文本文件读入数组数组

[英]How do I read a text file of numbers into an array of arrays

在python中,使用OpenCV库,我需要创建一些折线。 折线方法的示例代码显示:

 cv2.polylines(img,[pts],True,(0,255,255))

我把所有'pts'都放在一个文本文件中,格式如下:

x1,y1,x2,y2,x3,y3,x4,y4
x1,y1,x2,y2,x3,y3,x4,y4
x1,y1,x2,y2,x3,y3,x4,y4

如何读取此文件并将数据提供给方法调用中的[pts]变量?

我已经尝试过np.array(csv.reader(...))方法以及其他一些我发现的例子。 我可以成功读取文件,但它不是折线方法所需的格式。 (对于python来说,我是新手,如果这是C ++或Java,那就不是问题了)。

我会尝试使用numpy将csv作为数组读取。

from numpy import genfromtxt
p = genfromtxt('myfile.csv', delimiter=',')

cv2.polylines(img,p,True,(0,255,255))

如果需要将数据强制转换为特定格式,则可能必须将dtype参数传递给genfromtext。

https://docs.scipy.org/doc/numpy/reference/generated/numpy.genfromtxt.html

如果您知道每行中有固定数量的项目:

import csv

with open('myfile.csv') as csvfile:
    rows = csv.reader(csvfile)
    res = list(zip(*rows))
    print(res)

我知道它不漂亮,可能有更好的方法来做到这一点,但它的工作原理。 话虽这么说,如果有人能告诉我一个更好的方法,我将非常感激。

pointlist = []
f = open(args["slots"])
data = f.read().split()
for row in data:
    tmp = []
    col = row.split(";")
    for points in col:
        xy = points.split(",")
        tmp += [[int(pt) for pt in xy]]
    pointlist += [tmp]

slots = np.asarray(pointlist)

您可能需要单独绘制每条折线(以展开@Chris的答案):

from numpy import genfromtxt
lines = genfromtxt('myfile.csv', delimiter=',')

for line in lines:
    cv2.polylines(img, line.reshape((-1, 2)), True, (0,255,255))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM