Contar pixels da imagem

6 respostas
M

pessoal, sei que o código esta errado, na parte de chamar para o main, mas minha pouca experiencia não permite achar esse erro.
peguei parte do código na net e estou tentando adaptar ao que quero. O resultado seria contabilizar os valores dos pixels RGB.
qualquer ajuda é bem vinda.

import java.awt.*;
import java.awt.image.*;  
import java.io.File;
import java.io.IOException;     
import javax.imageio.ImageIO;

class ContarPixel extends Reconhecimento {
 {
     Image image = null;
     BufferedImage imagem = null;  
     Raster raster;                      
     try {  
        imagem = ImageIO.read(new File("C:/imagem/teste.jpg"));  
     }  
     catch (IOException ex) {  
           ex.printStackTrace();   
     }  
  
raster = imagem.getRaster();  
int cores[] = new int[255];  
  
for (int x = 0; x < imagem.getWidth(); x++) {  
     for (int y = 0; y < imagem.getHeight(); y++) {  
        raster.getPixel(x, y, cores); 
        }  
    }  
}
   
     public static void main(String args[]) {
         int cores[] = new int[255];  
         System.out.println("R("+cores[0]+") G("+cores[1]+") B("+cores[2]+")"); 
         }
     }

6 Respostas

V

E como vc pretende contabilizar esses pixels? Somando cores com valores de R G e B iguals? Haverá algum tipo de tolerância? Explique melhor seu problema.

M

na verdade o código que peguei na net estava assim: sem main… e estava tentando colocando uma main para futuros outros métodos.

for (int x = 0; x &lt; imagem.getWidth(); x++) {    
     for (int y = 0; y &lt; imagem.getHeight(); y++) {    
        raster.getPixel(x, y, cores);   
        System.out.println("R("+cores[0]+") G("+cores[1]+") B("+cores[2]+")");   
        }    
    }    
}

a principio queria apenas contabilizar os pixels RGB em um vetor… isso seriam apenas testes iniciais, a verdadeira problemática, depois se conseguisse realizar esses teste iniciais seria comparar 2 imagens… mas isso é pra depois… pelo que diz Prof. Rafael Santos http://www.lac.inpe.br/~rafael.santos/JIPCookbook/6050-howto-compareimages.jsp#howtohowdoicomparetwoimagestoseeiftheyareequal uma dos métodos para diferenciação de 2 imagens seria a contabilização dos pixels… uma certa tolerância imagino que seria permitida…

V

Você falou, falou, falou e não explicou o que quer dizer por “contabilizar RGB num vetor”.

J

Imagino que você esteja querendo criar um histograma, a partir do valor dos pixels.
uma lista ae resolve seu problema:

List<Object> hhistograma = new ArrayList(); hhistigrama.add(cores);

Lembrando que cores[], é a sua implementação de um byte pixel(cores pode variar até 4 bandas(ARGB));

M

juliocbq:
Imagino que você esteja querendo criar um histograma, a partir do valor dos pixels.
uma lista ae resolve seu problema:
Lembrando que cores[], é a sua implementação de um byte pixel(cores pode variar até 4 bandas(ARGB));

isto mesmo juliocbq, acredito que isto ajudaria… imagino que comparando o histograma de uma imagem com a de outra, eu teria alguma coisa para destingui-las…
mas onde eu adicionaria suas linhas de código no código que postei?
tentei adicionar aqui, mas não reconheceu a parte

List<Object> hhistograma = new ArrayList();

a na parte

hhistigrama.add(cores);

pediu para criar a class hhistigrama.

J

coloca um escopo global, ou seja, declare a lista como atributo da classe.

Criado 7 de novembro de 2009
Ultima resposta 10 de nov. de 2009
Respostas 6
Participantes 3