如何将数字文本文件读入数组数组
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))
在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))