Bem que opções temos em Java para realizarmos manipulação de Imagens? Ouvi falar do JAI, mas aqui mesmo no forum vi dizerem que já foi descontinuado, JAI foi mesmo descontinuado? Sei da existencia do OpenCV mas parece que o binding dele para Java ainda não suporta 100% da biblioteca. E agora então, o que nos resta?
Manipulação de Imagens
13 Respostas
depende muito… que tipo de manipulação precisa fazer?
Todo o tipo, transformações e aplicações de efeitos de coloração, contrast, brilho, etc em imagens estáticas e tb manipulação em tempo real, reconhecimento de objetos, etc…
Começo a achar que java só na web mesmo, quando a coisa é pra valer, ficamos sem opções. Eu sou do tipo que gosto de fazer todo que preciso sem ficar pulando de uma linguagem pra outra o bom é ter tudo que precisamos sem sair da linguagem, esse lance de fazer uma parte em uma linguagem e terminar na outra soa meio gambiarra.
“Linguagem de Proposito Geral”? Acho que só C++ mesmo…
vc pode utilizar a propria linguagem…
usando Graphichs
segue um exemplo:
http://www.javalobby.org/articles/ultimate-image/
e eh possível muito mais do que isso!
procurando que se acha…
procurando que se acha…
O JAI não foi descontinuado? Se foi é uma pena, era nossa quase resposta JAVA para o OpenCV do C++, digo quase pq OpenCV é OpenCV né.
Mas então, foi descontinuado ou não?
Use C++ com a opencv.
O JAI foi mesmo descontinuado, e nem de longe era tão completo quanto o opencv.
E o Java2D não vai fornecer o que você quer de maneira pronta.
Sem falar que a opencv é referência absoluta no assunto.
Isso não existe. O C++ também tem lá suas deficiências, como o fato de ser bem mais difícil de se programar.
O ideal é conhecer uma linguagem para cada propósito geral (pelo menos uma managed, uma unmanaged, uma de script, uma funcional, etc).
Falow o grande Vini…
Até que eu não acho C++ assim tão bicho de sete cabeças não, dependendo do Framework utilizado pode ficar bem simples, ALÁ Qt.
Bem,… sendo assim é bye bye Java dessa vez.
Com certeza. Se você usar C++ com smart pointers, RAII e bons frameworks como Qt e Boost, é quase como programar em Java.
Mas em processamento de imagens e jogos, eu já larguei os betes do Java.
O pai da criança (oracle) não quer brincar disso, então fica muito difícil a gente brincar também.
Sem falar que para processamento de vídeo você pode ter problemas com o garbage collector do Java. Eu mesmo já tive que processar uma sequencia a 110FPS e senti o congelamento do GC (em 110FPS cada quadro deve ser desenhado em 9ms).
Com certeza. Se você usar C++ com smart pointers, RAII e bons frameworks como Qt e Boost, é quase como programar em Java.
Mas em processamento de imagens e jogos, eu já larguei os betes do Java.O pai da criança (oracle) não quer brincar disso, então fica muito difícil a gente brincar também.
Sem falar que para processamento de vídeo você pode ter problemas com o garbage collector do Java. Eu mesmo já tive que processar uma sequencia a 110FPS e senti o congelamento do GC (em 110FPS cada quadro deve ser desenhado em 9ms).
Pois é tive este tipo de problema na época que fiz meu TCC… só uma duvida o pq vc precisa disso? em que tipo de projeto vai usar? é algo academico?
Começo a achar que java só na web mesmo, quando a coisa é pra valer, ficamos sem opções. Eu sou do tipo que gosto de fazer todo que preciso sem ficar pulando de uma linguagem pra outra o bom é ter tudo que precisamos sem sair da linguagem, esse lance de fazer uma parte em uma linguagem e terminar na outra soa meio gambiarra.
“Linguagem de Proposito Geral”? Acho que só C++ mesmo…
Você pode escrever qualquer algoritmo(tirando o viola e jones) que existem na opencv em java sem dificuldade. Existe até um mapeamento chamado javacv. Linguagens de programação(todas elas) servem para um único propósito: Servir de ferramenta lógica e mais nada.
Você vai utilizar c++ quando precisar de assembly enxuto e muito bem otimizado, se for por exemplo utilizar essas algoritmos numa ferramenta de edição de vídeo, ou visão artificial onde o tempo de processamento tem que ser muito curto. Fora isso pode muito bem escrever em java mesmo.
ps. Implementar operações de ponto, análise, aritiméticas, morfológicas em imagens digitais pode ser feito em java ou qualquer outra linguagem sem precisar apelar para apis, pois são simples.
A força da opencv é justamente o desempenho que ela tem(já que boa parte dela é otimizada em assembly para intel x86). Utilizá-la como mapeamento acaba sendo um desperdício depotencial.
http://homepages.inf.ed.ac.uk/rbf/HIPR2/wksheets.htm
http://code.google.com/p/javacv/
Sensacional, não conhecia ainda a javacv.