ERROR "cannot convert from float to int"
in
Programming Questions
•
4 months ago
Hello to all
are completely new in terms of processing. I would like to understand why in this line:
int n=random(2,256);
gives me error "cannot convert from float to int"
the rest of the program is this ( excuse me for the language but I have not had time to translate all the variables):
PImage immagineSorgente;
PImage immagineDestinazione;
void LeggiImmagine() {
// carico l'immagine da disco e creo l'oggetto PImage immagineSorgente
String nomeImmagineSorgente=selectInput("Scegli l'immagine da elaborare");
immagineSorgente = loadImage(nomeImmagineSorgente);
size(immagineSorgente.width, immagineSorgente.height);
// mostro l'immagine caricata
image(immagineSorgente, 0, 0);
}
void setup() {
LeggiImmagine();
}
void draw() {
}
PImage ConvertiLivelli(PImage immagineSorgente) {
// immagine elaborata - stesse dimensioni dell'immagine in ingresso
// image_out verrà restituita al programma chiamante
PImage immagineDestinazione =createImage(immagineSorgente.width, immagineSorgente.height, RGB);
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 (in lettura) ai pixel dell'oggetto PImage immagineSorgente
immagineSorgente.loadPixels();
// devo accedere (in scrittura) ai pixel dell'oggetto PImage immagineDestinazione
immagineDestinazione.loadPixels();
for (int y = 0; y < height; y++ ) {
for (int x = 0; x < width; x++ ) {
// calcolo la posizione (lineare) del pixel
locazionelineare = x + y*width;
// per il pixel in esame, estraggo i singoli canali di colore....
r = red(immagineDestinazione.pixels [locazionelineare]);
g = green(immagineDestinazione.pixels[locazionelineare]);
b = blue(immagineDestinazione.pixels[locazionelineare]);
// ... e poi ricreo il colore
coloreDelPixel=color (r,g,b);
int n=random(2,256);
int m=random(2,256);
color livello_di_colore;
livello_di_colore = coloreDelPixel * n / m;
livello_di_colore =immagineSorgente.pixels [locazionelineare];
// copio il colore del pixel nell'immagine destinazione
immagineDestinazione.pixels[locazionelineare] = livello_di_colore;
}
}
immagineDestinazione.updatePixels();
return immagineDestinazione;
}
1