Prezados,

Tenho feito um projeto com o arduino UNO onde ele pega uma imagem gerada com uma camera CMOS (estou usando um shield para isso) e salva no formato jpg ou png.

Preciso agora pegar essa imagem salva no cartão SD e transformar numa matriz de 0 e 1. (0 para qualquer cor e 1 para preto). Esse projeto e para imagens quase pontuais, ou seja de tamanho 20x10 ou 20x32...

Alguem tem alguma ideia de como faz essa matriz? pois irei fazer um OCR com essa matriz.

Em resumo e so para reconhecer tres números pequenos em uma imagem, tambem pequena e retornar numa string. por exemplo:

esse e um exemplo real, para nos e quase imperceptível, mas para o processamento e bem tranquilo... so preciso transformar numa matriz de 0 e 1... alguem tem ideia?

qualquer ideia, codigo, exemplo, projeto será muito bem vindo...

att,

Exibições: 731

Responder esta

Respostas a este tópico

Acho que sua dificuldade é decodificar o JPG. Isso é complicado. Se não tiver uma biblioteca pronta criar pode ser um problema..

Mas vc não teria acesso direto a imagem em memoria ? Ou em um LCD ? 

Se ela estiver em memoria ou LCD pode ser que esteja descompactada, aih fica mais facil.

Qual shield vc esta usando ?

Tenho ela num LCD do shield.

No caso: imagem é bitmap e o shield é o ArduCam. Mas nao vi nada lá sobre imagem descompactada...

Não salva em BMP ???

Os formatos JPG e PNG são compactados... Já BMP não (ou é num formato mais simples de descompactar). Qualquer um que fique imenso não é compactado.

Aih dá pra vc ir buscar os bytes dentro do arquivo. Estão na sequencia: Cabeçalho, dados da primeiro pixel, do segundo pixel, etc. No cabeçalho fala quantas linhas, colunas, bits por pixel, bits por cor, etc.

Vide: http://pt.wikipedia.org/wiki/Raster

Já se vc tem um LCD que possa mostrar a imagem quem sabe vc tem aih uma função do tipo GetPixel que fala a cor de um pixel... Ficaria bem mais simples.

Ela Salva sim em BMP...

Entendo o que você está dizendo, mas não achei nenhuma função parecida com GetPixel.

Será que não existe nenhuma biblioteca para o arduino uno que possa pegar os pixels de um BMP?

Ou talvez nao tenha entendido o que você quer explicar rsrs, mas teria jeito de eu navegar pela imagem sem essa funçaõ GetPixel? (momento noob ao extremo :$ )

Confesso to meio perdido aqui e o fato de ser um pouco urgente ta me deixando menos atento que o normal. O que será que estou deixando passar? =[

Acho que vc entendeu sim... Imaginei que podia ter uma função semelhante ao GetPixel.

No caso a que seta um pixel no GLCD. é SetDot() então seria GetDot() mas procurei por aqui e nada...

Não consigo te dar nenhuma sugestão simples e polida, quem sabe alguem conheça melhor, mas teoricamente obter um determinado ponto da imagem ficaria algo como:

Ponto = ImagemBMP[Cabecalho+X+Y*largura]

onde X e Y são as coordenadas;

Cabecalho é a quantidade de bytes a pular no inicio do arquivo (128 normalmente).

Se for 1 byte/pixel use unsigned char para ponto e imagem.

Se for 2 bytes/pixel use unsigned int.

Ainda existe uma chance de não dar certo, se o BMP for compactado. Aih vc tem que descompactar primeiro... Mas vamos torcer para não ser... Mas a compactação do BMP é simples, possivel de fazer (diferente do mpeg (usado no jpg)).

entendi... vou testar aki... vlw cara... volto com a resposta daki a pouco

Consegui fazer a transformação que precisava, vlw Eduardo, sua dica foi bem valiosa.

Agora agarrei no Algoritmo de OCR para reconhecer os números, bem isso vou olhar em outro tópico.

Mais uma vez agradeço Eduardo, vlw =]

Legal.

Se der faça um filminho no youtube do resultado e posta aqui pra posteridade...

Assim que conseguir o OCR posto sim... to com problemas com ele agora =[

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço