[英]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.