在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(...))方法以及其他一些我发现过的示例。我可以成功读取文件,但格式不是polylines方法想要的格式。 (就python而言,我是一个新手,如果它是C ++或Java,那不是问题。)
答案 0 :(得分:0)
我会尝试使用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
答案 1 :(得分:0)
如果您知道每行中的项目数量是固定的:
fclose(fp);
答案 2 :(得分:0)
我知道它不是很漂亮,并且可能有一种更好的方法来做到这一点,但它确实有效。话虽如此,如果有人可以向我展示一种更好的方法,将不胜感激。
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)
答案 3 :(得分:0)
您可能需要分别绘制每条折线(以扩展@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))