Come posso creare un set di coordinate pixel per una linea in Python?

0

Ho del codice che cerca pixel per pixel da un punto di partenza, ad una certa angolazione, finché trova un pixel (un pixel non bianco)

Devono solo cercare circa 300 pixel: attualmente sto usando la funzione polare alla funzione cartesiana 300 volte ...

def pol2cart(rotdist, cwangle):
    x = rotdist * numpy.cos(cwangle)
    y = rotdist * numpy.sin(cwangle)
    return(x, y)

... ma è molto lento, fino a 68 millisecondi per ricerca (se va tutto il 300 senza trovare nulla) e ho un sacco di queste ricerche da fare ... che è la causa principale di la mia funzione complessiva richiede circa 20 secondi per essere eseguita (sarei felice con < 2 secondi)

La mia teoria è: se riesco a creare un elenco di coordinate che descrivono una linea dal punto centrale al punto finale della distanza 300px, ho solo bisogno di eseguire pol2cart una volta (vai a ottenere il punto finale) e poi posso semplicemente ripetere sulla mia "lista di linee" ...

Quindi potrei fare qualcosa come (psuedo):

If line == UppyDowny:
    for Y in line:
        Solve X 

elseIf line == LeftyRighty:
    for X in line:
        Solve Y 

linecoords.append((X,Y))

... Non sto chiedendo a qualcuno di codificarlo per me, ma mi chiedo se esiste una funzione di libreria comune esistente che lo raggiunge? (come sarà senza dubbio più veloce di come codificherei quanto sopra e anche molto più veloce di 600 chiamate cos / sin)

    
posta Simon 25.08.2016 - 13:59
fonte

1 risposta

-1

Avvicinandomi ho trovato un Eye Diagram che include un puro Python Bresenham implementazione e uno Cython, HTH:)

    
risposta data 27.08.2016 - 15:38
fonte

Leggi altre domande sui tag