Estou disponibilizando o arquivo .OVA do VirtualBox com o snapshot de um ambiente de desenvolvimento em C++ com o Eclipse no Lubuntu:
https://drive.google.com/file/d/0B1Pk4ZxWGXeVQ2M1SDFOT3R6ZHM/view?usp=sharing ( Usuário: user / Senha: andre )
Devido á um "bug" do syntax highlighter do Eclipse com codigo C++ de não reconhecer o tipo nativo uint8_t do GCC, não consegui remover esse Warning da IDE, mas que ficou presente apenas no Eclipse, sendo que na compilação do GCC não afetaou em nada. Nos foruns da área, cada um resolveu isso de um modo diferente, mas não quis perder tempo com isso.
Inicialmente utilizei como base o video do AMMAURO #3, que ensina detalhadamente todos os passos necessários para instalação do SDK da Espressif e toolchain de Xtensa para compilação em C para o microcontrolador ESP8266 ( o final do video anterior dele AMMAURO #2 também é util, mostrando como compartilhar arquivos entre Linux/Widows ):...
Aplicações envolvendo processamento de imagens tem sido cada vez mais comum no quotidiano.
Para inicar qualquer trabalho de reconhecimento e classificação de imagens, o primeiro passo é realizar a etapa de aprimoramento da imagem "image enhancement" para melhor facilitar a extração dos pontos de interesse.
Uma das bibliotecas gratuitas mais utilizadas é o OpenCv, cujos recursos permitem acelerar o desenvolvimento de soluções em processamento de imagens.
O programa abaixo foi baseado num exemplo disponibilizado gratuitamente no fórum QTcentre, no qual incluí algumas outras opções:
http://www.qtcentre.org/threads/43056-Qt-OpenCV-simple-example
Segue a tela:
Segue o projeto, baseado no OpenCV2.3 e QT 4.7.3:
http://speedy.sh/nJ8dB/WebCamReader.rar
Segue a tela da IDE:
Ao lidarmos com displays que não têm padrão de caracteres no tamanho desejado, precisamos inserir mapas de caracteres no código do programa. Como gerar a tabela inteira é uma tarefa um tanto proibitiva, o próximo passo é fazer uma busca na web por algum arquivo de bitmap disponível.
No entanto, depois de encontrá-lo e colocar o mapa no código, não raramente nos damos conta de que esses caracteres não foram criados na direção que o painel será posicionado, e teremos de fazer rotação de + / - 90 graus no mapa, o que significa:
Queremos converter isso...
...nisso
O programa abaixo realiza essa tarefa: Primeiro, definimos o arquivo que contém o código do mapa deve ser incluído, em seguida seleciona-o e, finalmente transpôe-se cada matriz de caracteres da seguinte forma:...
Será apresentado a seguir a implementação de uma rotina de varredura de teclado matricial, um pouco diferente as utilizadas regularmente, que traz alguns benefícios:
1) Permite combinação de várias teclas pressionadas na mesma linha: 8 (4 teclas), 32 (3 teclas), 48 (2 teclas), 16 (1 tecla).
2) Mais rápido, pois são realizadas 2 varreduras (de nibble), em vez de 16 varreduras de bits na abordagem clássica.
Segue abaixo a implementação:
cpp code
/* ********************************************************************** */
#define ROW_MASK 0x0F
#define COLUMN_MASK 0xF0
#define NO_KEY 0x00
/* ********************************************************************** */
unsigned int ScanKey ( void )
{
unsigned int ReadingKey ;
TRISx = COLUMN_MASK ; // Set high nible as Input and low nible as Output ( not tested )...