簡體   English   中英

使用Python從CSV繪制像素坐標

[英]Plotting pixel coordinates from CSV using Python

我從圖像中提取了像素坐標(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:無法將字符串轉換為浮點型:'0 \\ t3'

請幫助解決此問題。 提前致謝

您的輸入邏輯:

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

我已經相應地更新了上面的代碼。

錯誤消息指出您的文本內有一個制表符('\\ t'-字符),您的strip命令中並未將其刪除。 當您嘗試將字符串轉換為導致ValueError的浮點時,“ \\ t”字符仍然存在。

因此,您可以嘗試找出輸入文件為何首先包含表格的原因,或者將其與其他空格字符一起刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM