1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Imagens Python

Discussão em 'Programação' iniciada por fuchs, 15 de Outubro de 2012. (Respostas: 16; Visualizações: 1413)

  1. Olá

    Alguém me sabe dizer pq é q isto me dá erro?

    import Image
    im=Image.open("imagem.tiff")

    Não sei se devo colocar a imagem em algum lugar especifico ou se me esta a faltar alguma coisa....
     
  2. nfk

    nfk Power Member

    Qual é o erro?
     
  3. Mach4_PT

    Mach4_PT Power Member

    Se estiveres em Python3
    Código:
    from PIL import Image
    
    Já agora, também pediste ajuda neste topico: http://forum.zwame.pt/showthread.php?t=751767
    e
    não disseste nada, nem se resolveu nem obrigado.

    Ve se desta vez dizes alguma coisa
     
    Última edição: 15 de Outubro de 2012
  4. Isto pq n resolvi nem um nem outro..

    n voltei ao outro topico mas n deixo de te quer agradecer a ajuda

    Obrigado
     
  5. Tinha colocado esse código mas tb sem sucesso.

    O que me aparece é o seguinte:
    File "C:\Users\tmn\Java\p1\test.py", line 14, in <module> im=Image.open("imagem.tiff")
    File "C:\Python27\lib\site-packages\PIL\Image.py", line 1952, in open
    fp = __builtin__.open(fp, "rb")
    IOError: [Errno 2] No such file or directory: 'imagem.tiff'
     
  6. nfk

    nfk Power Member

    Da maneira que escreveste o código tens de correr o programa na pasta onde está a imagem.
     
  7. Já coloquei a imagem na mesma pasta...mesmo assim n deu...
     
  8. Mach4_PT

    Mach4_PT Power Member

    Tens de meter um ./ antes do nome da imagem provavelmente.
     
  9. João Sousa

    João Sousa Power Member

    Aproveitando este tópico vou colocar uma duvida.

    Criei um programa que faz a codificação/descodificação de Huffman. Em termos de som e texto, não tive qualquer problema. Agora quando tenho de fazer o mesmo com uma imagem, é que tenho uma duvida. Assumindo que já foi feita a codificação e posterior descodificação, como escrevo para uma imagem .tiff a imagem descodificada?

    ex:

    from PIL import Image

    input=Image.open("imagem.tiff")
    ...
    1º passo
    #cria tabela

    2ºpasso
    #codifica imagem

    3ºpasso
    #descodificação
    y=descodificação # y é uma lista

    4ºpasso
    #escreve num ficheiro a "imagemDescodificada.tiff"


    No 4º passo, assume-se também que se sabe as dimensões da imagem que se quer gravar.

    Por incrível que pareça, já pesquisei na net como fazer a escrita de uma imagem com os parâmetros altura e largura e não encontrei nada.

    Podem ajudar-me?
     
  10. nfk

    nfk Power Member

    Tens o método resize para mudar o tamanho, se for preciso.
     
  11. João Sousa

    João Sousa Power Member

    Mas eu não quero mudar o tamanho. Se calhar não me fiz entender muito bem. y é uma lista 1D e quero pegar nos valores dessa lista e passa-los para uma imagem, mas para isso, tenho de ter um método qualquer do python que me permite passar a dimensão (altura, largura) e nome do ficheiro.
     
  12. nfk

    nfk Power Member

    O nome do ficheiro é no save(), o tamanho podes mudar na imagem, mas não quando gravas, pelo que vejo das funções. Qual é a diferença entre gravar com um certo tamanho e mudar primeiro o tamanho e depois gravar?

    Não sei se te estás a fazer entender, mas eu não percebi o que estás a fazer. Tens um vetor de números e queres "passá-los para uma imagem"? O que queres dizer com isso? Queres que os pixéis da imagem tenham a intensidade proporcional a cada valor (em escala de cinzento)?
     
  13. João Sousa

    João Sousa Power Member

    Sim, é em escala de cinzentos(8bit)
    A titulo de exemplo, tens o y com os seguintes valores:
    y=[1, 0, 45, 67, 20, 40, 20, 1, 1, 1, 4, 5, 3, 9, 15, 16]

    Eu quero pegar nessa lista e transformá-la com a dimensão 4x4.

    A imagem deve ficar gravada com os valores desta forma:

    1 0 45 67
    20 40 20 1
    1 1 4 5
    3 9 15 16
     
  14. nfk

    nfk Power Member

    Ok. Assim o melhor é definir logo o tamanho no "new". Algo como:

    Código:
    image = Image.new("L", (4,4))
    Depois deves poder usar o putdata para fazer o que queres (y é a lista do teu comentário anterior):

    Código:
    image.putdata(y)
     
  15. João Sousa

    João Sousa Power Member

    Já está a funcionar. Só tive de adicionar a seguir ao image.putdata(y) a instrução para gravar a imagem image.save("imagemDescodificada.tiff").

    Muito obrigado pela ajuda;).
    Só uma ultima pergunta. Onde tens o "L", também podes colocar um "P". Qual a diferença entre um e outro?
     
  16. nfk

    nfk Power Member

  17. João Sousa

    João Sousa Power Member

Partilhar esta Página