PDA

Visualizza la versione completa : [PROCESSING] Modificare i pixel di un'immagine caricata


Fify
03-03-2012, 19:24
:ciauz: Salve ragazzi/e!
Sono una new entry in questo forum, terribilmente negata per le materie scientifiche e per la programmazione informatica in generale.
Qualcuno di voi conosce Processing?

Spero di trovare qui l'aiuto e il conforto necessario! :bhò:

oregon
03-03-2012, 19:53
Ma la domanda qual è?

MItaly
03-03-2012, 21:44
Processing is an open source programming language and environment for people who want to create images, animations, and interactions.
Non ho mai capito esattamente quale sia lo scopo di scienze della comunicazione in generale, ma a me pare sensato che se devi imparare a creare "modi di comunicare" innovativi basati sui cosiddetti "new media" sia sensato farvi imparare un linguaggio di questo genere.. :bhò:

Fify
03-03-2012, 22:57
La domanda era piuttosto chiara: qualcuno conosce il linguaggio di programmazione Processing?

oregon
03-03-2012, 23:01
Originariamente inviato da Fify
La domanda era piuttosto chiara: qualcuno conosce il linguaggio di programmazione Processing?

Il fatto è che nei forum tecnici come questo non si chiede se qualcuno conosce un linguaggio ma si propone il "problema" specifico per il linguaggio in questione, magari con il codice e con eventuali errori/malfunzionamenti.

Ecco perché ho chiesto quale fosse la domanda.

Fify
03-03-2012, 23:05
Originariamente inviato da oregon
Il fatto è che nei forum tecnici come questo non si chiede se qualcuno conosce un linguaggio ma si propone il "problema" specifico per il linguaggio in questione, magari con il codice e con eventuali errori/malfunzionamenti.

Ecco perché ho chiesto quale fosse la domanda.

Mea culpa allora. Pardon. :shy:

oregon
03-03-2012, 23:10
Originariamente inviato da Fify
Mea culpa allora. Pardon. :shy:

Nessun problema ... ma fai la domanda specifica, altrimenti i moderatori chiudono ...

Fify
03-03-2012, 23:30
D'accordo, grazie per la compresione Oregon...ora ci provo: il progetto che mi viene chiesto di realizzare riguarda l'elaborazione delle immagini tramite il linguaggio Processing. Posto il punto in cui sto trovando difficoltà:
Parte1: Definire la funzione AnnullaColori
La funzione considera una immagine e le coordinate di una regione
rettangolare: xmin, ymin, xmax, ymax (vedi figura)
Restituisce l'immagine formata ponendo a zero una a caso delle tra
componenti fondamentali di ciascuno dei pixel.
Suggerimento: usare la funzione random.

Sono riuscita a far funzionare la funzione random (scusate il gioco di parole) con il seguente codice:

float k;
float r=40;
float g=150;
float b=150;
int z;

size(300,300);
background(255);


k=random(1,4);
z=int(k);
if(z==1){
r=0;g=150;b=150;
fill(r,g,b);
}
if(z==2){
r=40;g=0;b=150;
fill(r,g,b);
}
if(z==3){
r=40;g=150;b=0;
fill(r,g,b);
}
print(r+" "+g+" "+b);
rectMode(CORNER);
rect(100,100,50,50);

Il tutto per ora funziona perfettamente perchè ho costruito un rettangolo apposito per verificare la casualità dell'annullamento del colore di uno dei 3 canali (r,g,b).
Ma questo procedimento non funziona quando si tratta di modificare i pixel dell'immagine caricata a scelta dall'utente una volta partito il run di Processing. Il codice che mi permette di caricare un'immagine a scelta e agire su di essa (per ora senza alcun successo) è:

PImage img; //creo l'oggetto img

void setup() {
String immagine = selectInput(); //seleziono un immagine presente all'interno del cp
img = loadImage(immagine); //trasferisco l'immagine in img
size(img.width, img.height); //genero la finestra di processing inserendo come parametri la larghezza e l'altezza dell'immagine selezionata
}

void draw() {

int locazionelineare; // questa variabile conterrà la posizione (lineare) del pixel
color coloreDelPixel;// questa variabile conterrà il colore del pixel

float r; // questa variabile conterrà il valore del canale 'rosso' per il singolo pixel
float g; // questa variabile conterrà il valore del canale 'verde' per il singolo pixel
float b; // questa variabile conterrà il valore del canale 'blu' per il singolo pixel


// devo accedere ai pixel della finestra (in scrittura)
loadPixels();

// devo accedere (in lettura) anche ai pixel dell'oggett PImage img
img.loadPixels();

for (int y = 0; y < img.height; y++ ) {
for (int x = 0; x < img.width; x++ ) {

// calcolo la posizione (lineare) del pixel
locazionelineare = x + y*img.width;


// per il pixel in esame, estraggo i singoli canali di colore....

r = red(img.pixels [locazionelineare]);
g = green(img.pixels[locazionelineare]);
b = blue(img.pixels[locazionelineare]);
// ... e poi ricreo il colore
coloreDelPixel=color (r, g, b);


// copio il colore del pixel dalla variabile alla finestra
pixels[locazionelineare] = coloreDelPixel;
}
}

// ora devo aggiornare l'immagine in finestra. Infatti ho alterato i pixel nell'array PIXELS
// ma questi pixel non sono ancora visibili.
updatePixels();
}

Mi sono spiegata come meglio ho potuto. Qualcuno può aiutarmi a capire come agire sui singoli pixel con la funzione random?

ardito86
03-03-2012, 23:30
Ciao Fify, questo linguaggio su quel sito che hai linkato è ben documentato. Io non lo conosco, ma leggendo il sito credo che si possa impararlo facilmente...Ci sono tutorial e reference...
Inoltre sono dei tutorial passo-passo...

Fify
03-03-2012, 23:34
Originariamente inviato da ardito86
Ciao Fify, questo linguaggio su quel sito che hai linkato è ben documentato. Io non lo conosco, ma leggendo il sito credo che si possa impararlo facilmente...Ci sono tutorial e reference...
Inoltre sono dei tutorial passo-passo...

Ciao Ardito, si ho consultato il reference più volte, ma per il problema che sto avendo io con il progetto è del tutto inutile! O per lo meno insufficiente :dhò:

Loading