使用Python从CSV绘制像素坐标

时间:2017-07-20 12:19:54

标签: python-3.x opencv turtle-graphics

从图像中我提取了像素坐标(x,y)。为了验证坐标,我试图绘制那些像素坐标。但我无法做到。

我试图用乌龟绘图,但我仍然无法做到

import turtle
import math

def drawMap():
    filename = r"build_coords.csv"

    trace = turtle.Turtle()
    trace.up()

    #scr = Screen()

    with open(filename, 'r') as f_input:
        for row in f_input:
            row = row.strip('()\n').split(',')
            x = float(row[0])
            y = float(row[1])
            trace.goto(x,y)
            trace.write(".")
    raw_input()
    #scr.mainloop()
drawMap()
  

ValueError:无法将字符串转换为float:' 0 \ t3'

请帮忙解决这个问题。提前致谢

2 个答案:

答案 0 :(得分:1)

您的输入逻辑:

x, y = row.strip('()\n').split(',')

似乎意味着输入表格:

(10, 20)
(30, 40)

不是CSV。您的错误消息似乎意味着输入表单:

10\t20
30\t40

因此,正确回答问题的关键是向您展示一些示例输入。下面是代码的修改:

from turtle import Turtle, Screen

FILENAME = "build_coords.csv"

def drawMap(filename):
    trace = Turtle(visible=False)
    trace.penup()

    with open(filename) as f_input:
        header = f_input.readline().rstrip()  # "X,Y"

        for row in f_input:
            x, y = row.rstrip().split(',')  # 10,20\n
            trace.goto(float(x), float(y))
            trace.dot(2)

screen = Screen()

drawMap(FILENAME)

screen.exitonclick()

<强>更新

根据您的评论,我现在假设数据是CSV,看起来像:

X,Y
0.0,3.0
0.0,4.0
0.0,5.0
0.0,6.0
0.0,8.0
0.0,10.0
0.0,11.0
0.0,15.0
0.0,16.0

我已相应更新了上述代码。

答案 1 :(得分:0)

错误消息表示文本中有一个制表符(&#39; \ t&#39; -character),这在yor strip命令中没有删除。 &#39; \ t&#39;当您尝试将字符串转换为导致ValueError的浮点时,字符仍然存在。

因此,您可以尝试找出输入文件首先有表格的原因,或者将其与其他空白字符一起除去。