簡體   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