Trasformare un immagine in verticale, il rapporto tra l’immagine originale e quella nuova. [python]

Sto provando a capovolgere una foto sul suo asse verticale, sto facendo questo in python, e usando il modulo Media.

come questo:
Trasformare un immagine in verticale, il rapporto tra l'immagine originale e quella nuova. [python]

cerco di trovare la relazione tra l’originale e capovolto. dal momento che ho la possibilità di andare in negativo le coordinate in python, quello che ho deciso di fare è utilizzare il mezzo della foto come riferimento.

così ho diviso l’immagine in mezzo,e questo è quello che ho intenzione di fare:

[nota posso creare una nuova immagine vuota e copiare ogni (x,y) pixel corrispondente a (-x,y), se il pixel è dopo la metà.

se la sua prima metà, posso copiare i pixel (x,y) a (x,y)

Trasformare un immagine in verticale, il rapporto tra l'immagine originale e quella nuova. [python]

così ho codificato in python, e questo è il risultato.

Originale:
Trasformare un immagine in verticale, il rapporto tra l'immagine originale e quella nuova. [python]

ho ottenuto questo:

import media

pic=media.load_picture(media.choose_file())


height=media.get_height(pic)
width=media.get_width(pic)
new_pic=media.create_picture(width,height)

for pixel in pic:
   x_org=media.get_x(pixel)
   y_org=media.get_y(pixel)
   colour=media.get_color(pixel)
   new_pixel_0=media.get_pixel(new_pic,x_org+mid_width,y_org) #replace with suggested     
                                                              #answer below
   media.set_color( new_pixel_0,colour)


media.show(new_pic)

Trasformare un immagine in verticale, il rapporto tra l'immagine originale e quella nuova. [python]

questo non è quello che volevo, ma io sono così confusa, cerco di trovare la relazione tra l’originale posizione di pixel e la sua trasformazione (x,y)->(-x,y). ma credo che sia sbagliato. Se qualcuno mi potrebbe aiutare con questo metodo sarebbe bello pieno.

alla fine della giornata, voglio una foto come questa:

Trasformare un immagine in verticale, il rapporto tra l'immagine originale e quella nuova. [python]

http://www.misterteacher.com/alphabetgeometry/transformations.html#Flip

stessa domanda di uno stesso stackoverflow.com/questions/9154120/…
quindi……………..

OriginaleL’autore Wobblester | 2012-02-07

3 Replies
  1. 2

    Tuo aritmetica non è corretto. Invece, provare questo…

    new_pixel_0 = media.get_pixel(new_pic, width - x_org, y_org)

    Non c’è bisogno di trattare le due metà dell’immagine separatamente.

    Questo è essenzialmente negando il x-coordinare, come prima illustrato nel diagramma, ma poi scivola (o traduce) l’immagine ribaltata da di larghezza pixel a destra per rimetterlo in range (0 – di larghezza).

    scusa, cosa intendi per “il Tuo aritmetica. x_dash = immagine.larghezza – x”
    Speriamo che il mio rivisto risposta è più chiaro per voi.
    Grazie tanto funziona perfettamente!
    Felice di essere d’aiuto 🙂

    OriginaleL’autore Johnsyweb

  2. 34

    Perché non usare Python Imaging Library? Lanciando un’immagine in senso orizzontale è un one-liner, e molto più veloce di avvio.

    from PIL import Image
    img = Image.open("AFLAC.jpg").transpose(Image.FLIP_LEFT_RIGHT)
    Devo usare solo la Libreria Multimediale. Non sto cercando per la risposta, ma alcuni suggerimenti perché ho lottato con esso per un paio di ore.Grazie

    OriginaleL’autore kindall

  3. 0

    Qui è una semplice funzione per invertire un’immagine utilizzando scipy e numpy:

    import numpy as np
    from scipy.misc import imread, imshow
    import matplotlib.pyplot as plt
    
    def flip_image(file_name):
        img = imread(file_name)
        flipped_img = np.ndarray((img.shape), dtype='uint8')
        flipped_img[:,:,0] = np.fliplr(img[:,:,0])
        flipped_img[:,:,1] = np.fliplr(img[:,:,1])
        flipped_img[:,:,2] = np.fliplr(img[:,:,2])
        plt.imshow(flipped_img)
        return flipped_img

    OriginaleL’autore Ernest S Kirubakaran

Lascia un commento