Como abrir imagem e capturar os pixels da mesma

7 respostas
D

Olá pessoal tudo bem? Bom estou postando uma parte de um codigo que estou implementando. E gostaria da ajuda de vocês para conferir se está certo. Pois ainda não achei um modo de abrir novamente a imagem depois de jogar nesta matriz de pixels.

try {
    BuffImage = ImageIO.read(fileop);
    numBandas= BuffImage.getSampleModel().getNumBands();
    Raster imageraster = BuffImage.getRaster();
    int[][] vetorPixels = new int[numBandas][largura*altura];
    for (int i = 0; i < altura; i++)
        for (int j = 0; j < largura; j++) {
            indice = i*largura + j;
          for (int nb = 0; nb < numBandas; nb++)
              vetorPixels[nb][indice] = imageraster.getSample(j, i, nb);
        }

Bom neste trecho de codigo, estou pegando os valores dos pixels de uma imagem lida. Gostaria de saber se está correto esta implementação. E como eu faria para fazer o inverso, no caso plotar a imagem com os valores que estão dentro da matriz de pixel.

abraços!!

7 Respostas

pedroroxd

To precisando da mesma coisa… rs
Alguém ae?

a.moraissoares

Opa amigo. Poste seu código entre as tags code: codigo
Pra ficar mais fácil do pessoal te ajudar

ViniGodoy

Você pode usar os métodos getPixel e setPixel da classe Image.

O que exatamente você está tentando fazer? Filtros?

D

então estou abrindo uma imagem e pegando todos os pixels desta imagem, pois vou ter que depois de pegar estes pixels, fazer uma comparação usando algumas mascaras pre definidas.

Estou usando isso para fazer um reconhecimento.

Exemplo:

Após pegar estes pixels, e pre definir algumas matrizes de mascaras, vou passar comparando no vetor que eu peguei os pixels. Para saber na posição x do vetor, se ha alguma mascara que corresponde ao vetor( no caso a imagem).

Bom vê ae se entenderam, senão qualquer coisa eu tento explicar melhor.

obrigado

pedroroxd

Então o que eu estou pensando é diferente…
Tem uma imagem com diversos pixels, quando a pessoa passa o mouse em cima do pixel, aparece o número dele (567 - 254)…
Ae eu iria esconder dentro do click de alguns pixels “premios”.
Quando a pessoa clica num pixel errado, exibe uma mensagem de erro…
Quando clica no pixel com o premio escondido por mim, exibe uma mensagem falando que ela ganhou…

Lucas_Abbatepaolo

pra fazer o inverso vc deve criar novamente um BufferedImage a partir da matriz q vc criou.
Vc pode fazer isso com um estrutura de repetiçao msm. Se naum me engano vc usa o metodo setRGB(int coordenadaX, int coordenadaY, int valorDoPixel).

Lucas_Abbatepaolo

pedroroxd …vc ja tem algo pronto?? em qual parte esta com duvida?

Criado 22 de setembro de 2009
Ultima resposta 28 de set. de 2009
Respostas 7
Participantes 5