Ciampa
22-05-2009, 17:22
salve,
mi servirebbe aiuto su come ruotare un immagine di 90 gradi; nel programma prendo in input un file.yuv (ogni pixel ha su 8 bit l'informazione del suo colore in scala di grigi; un vettore della dimensione della risoluzione dell'immagine immagazzina per ogni pixel il suo valore) e lo stampo su consolle usando caratteri cercanco di dare l'impressione dell'immagine. La consegna richiede anche di stampare un negativo dell'immagine e di ruotarla di 90 gradi: bisognerebbe ottenerlo usando un vettore d'appoggio, al quale vengono passati i pixel in modo da ruotare l'immagine di 90 gradi; ma il massimo che ho ottenuto è stata l'immagine ruotata di 90 gradi, ma poi anche simmetrizzata rispetto all'asse y. Qualcuno riesce a indicarmi il giusto algoritmo di passaggio tra i due vettori (da picture[] a picture90[]?
qui c'è un pezzo di codice: il primo metodo è la stampa normale, il secondo dovrebbe essere quella di rotazione.
if (risposta.compareTo("stampa") == 0)
for (int y=0; y<altezza; y++) {
for(int x=0; x<larghezza; x++) {
stampa (picture[(y*(int)altezza) + x]);
}
System.out.println();
}
else if (risposta.compareTo("ruota") == 0) {
int picture90[] = new int [(int)altezza * (int)larghezza];
for (int y=0; y<altezza; y++)
for(int x=0; x<larghezza; x++) {
picture90[(x*(int)larghezza)+y]=picture[y*(int)larghezza+x];
}
for (int y=0; y<altezza; y++) {
for(int x=0; x<larghezza; x++) {
stampa (picture90[(y*(int)altezza) + x]);
}
System.out.println();
}
}
l'intero progetto è disponibile qui (http://dl.getdropbox.com/u/614097/TLP_Es10_DIMP.zip)
ps: il nome del file da inserire è test.yuv
le dimensioni sono 64 x 64
mi servirebbe aiuto su come ruotare un immagine di 90 gradi; nel programma prendo in input un file.yuv (ogni pixel ha su 8 bit l'informazione del suo colore in scala di grigi; un vettore della dimensione della risoluzione dell'immagine immagazzina per ogni pixel il suo valore) e lo stampo su consolle usando caratteri cercanco di dare l'impressione dell'immagine. La consegna richiede anche di stampare un negativo dell'immagine e di ruotarla di 90 gradi: bisognerebbe ottenerlo usando un vettore d'appoggio, al quale vengono passati i pixel in modo da ruotare l'immagine di 90 gradi; ma il massimo che ho ottenuto è stata l'immagine ruotata di 90 gradi, ma poi anche simmetrizzata rispetto all'asse y. Qualcuno riesce a indicarmi il giusto algoritmo di passaggio tra i due vettori (da picture[] a picture90[]?
qui c'è un pezzo di codice: il primo metodo è la stampa normale, il secondo dovrebbe essere quella di rotazione.
if (risposta.compareTo("stampa") == 0)
for (int y=0; y<altezza; y++) {
for(int x=0; x<larghezza; x++) {
stampa (picture[(y*(int)altezza) + x]);
}
System.out.println();
}
else if (risposta.compareTo("ruota") == 0) {
int picture90[] = new int [(int)altezza * (int)larghezza];
for (int y=0; y<altezza; y++)
for(int x=0; x<larghezza; x++) {
picture90[(x*(int)larghezza)+y]=picture[y*(int)larghezza+x];
}
for (int y=0; y<altezza; y++) {
for(int x=0; x<larghezza; x++) {
stampa (picture90[(y*(int)altezza) + x]);
}
System.out.println();
}
}
l'intero progetto è disponibile qui (http://dl.getdropbox.com/u/614097/TLP_Es10_DIMP.zip)
ps: il nome del file da inserire è test.yuv
le dimensioni sono 64 x 64