Arquivo da tag: Desenvolvimento

Instalando o OpenBR no Debian

Hoje a vida moderna está rodeada de câmeras e sistemas de segurança, este fator mudou o cenário de TI atenuando o foco para esta área. Em meados da década de 80 vimos surgir a biometria facial, de retina e iris, além do reconhecimento de assinaturas.

O OpenBR (http://openbiometrics.org/) é uma framework baseada na plataforma OpenCV, desenvolvida em 1999 pela Intel para melhorar o uso intensivo de processamento. (Mais informações) Tem como pilar algoritmos de reconhecimento facial, estimativa de idade e estimativa de gênero. O OpenBR é compatível na plataforma Windows,Mac OS X e Debian Linux. O Projeto está sob a licença Apache 2.0.

Let’s play a game …

Vamos demonstrar uma instalação básica da framework e seus tutoriais se encontram aqui e está disponível vários itens como :

  • Treinamento
  • Reconhecimento Facial
  • Estimativa de Idade
  • Estimativa de Gênero
  • Bibliotecas
  • Etc…

Instalação

  • Vamos atualizar o sistema e instalar o GCC 4.9.2

$ sudo apt-get update
$ sudo apt-get install build-essential

O build-essential é um pacote para desenvolvimento contendo (gcc,g++ o make entre outros)

  • Instalar o CMake (CMake é um sistema multiplataforma para realizar geração automatizada)

$ sudo apt-get install cmake cmake-curses-gui

$ cd /tmp/
$ unzip opencv-2.4.11.zip
$ cd opencv-2.4.11
$ mkdir build
$ cd build
$ cmake –DCMAKE_BUILD_TYPE=Release ..
$ make -j4
$ sudo make install
$ cd ../..
$ rm -rf opencv-2.4.11*

  • Qt 5.4.1

$ sudo apt-get install qt5-default libqt5svg5-dev qtcreator

  • Agora, vamos instalar o OpenBR diretamente do repositório oficial no GitHub

$ git clone https://github.com/biometrics/openbr.git
$ cd openbr
$ git checkout master
$ git submodule init
$ git submodule update

  • Compilação !!!

$ mkdir build #Na raiz da instalação do OpenBR
$ cd build
$ cmake –DCMAKE_BUILD_TYPE=Release ..
$ make -j4
$ sudo make install

  • Os passos a seguir são opcionais, porém eu recomendo realizá-los ..

Baixando os Datasets (rede neural de treinamento da biometria) e testando o algorítimo

Obs : Este passo pode demorar um pouco pois serão baixados 13.5 Gb de dados.

$ cd openbr/scripts
$ ./downloadDatasets.sh
$ cd ../build
$ make test

  • Pacotes do OpenBR !!

$ cd openbr/build
$ sudo cpack –G TGZ

  • Documentação
  1. Compilar os documentos

$ pip install mkdocs
$ cd openbr/docs
$ sh build_docs.sh
$ mkdocs serve

  1. Abra o browser e digite : http://127.0.0.1:8000

Agora temos uma estrutura completa de reconhecimento facial instalada e para testar vamos utilizar o comando :

$ br -algorithm FaceRecognition -compare face1.jpg face2.jpg

Nos próximos artigos vamos falar um pouco mais sobre biometria facial, score, match e etc ..

See you soon …

Anúncios

Package Control do Sublime Text – o que é e como utilizar

Neste artigo vamos analisar o Package Control, que é um gerenciador de pacotes para o sublime text que auxilia na instalação, atualização ou remoção de pacotes do editor de texto. Esse recurso torna muito mais fácil a forma como gerenciamos os pacotes presentes no editor.

O que é o Package Control ?

Primeiro vamos entender o que é o Package Control: nada mais é que um gerenciador de pacotes, no caso “pacotes” são complementos que aprimoram a experiência do usuário no software (como plugins para o firefox, por exemplo). O próprio Package Control é um pacote do Sublime.

Instalando o Package Control no Sublime

Siga os passos abaixo para instalar o Package Control no Sublime Text 2+:

  1. Acesse o endereço https://sublime.wbond.net/installation e copie a linha de comando de instalação para versão do sublime que você possui.
  2. Abra o console do sublime pressionando as teclas Ctrl + ‘.
  3. Cole a linha de comando referente a sua versão do sublime como apresentada no primeiro passo.
  4. Pressione ENTER.
  5. Após o termino da instalação do PC (package control) basta reiniciar o Sublime Text para que ele inicie carregando este novo complemento.

Caso você não consiga instalar o PC através do console do Sublime, existe outra opção que é a instalação manual, conforme os passos a seguir:

  1. Clique no menu preferences > browse package… – o sistema vai abrir uma janela do windows explorer na pasta onde são salvos os pacotes do Sublime.
  2. na pasta que se abriu, vá até a pasta Installed Packages.
  3. Baixe o pacote do Package Control e copie o arquivo baixado para a pasta Installed Packages.
  4. Reinicie o Sublime Text.

Como utilizar

Com o sublime aberto pressione Crtl + Shitf + P para iniciar o command palette.

Digite Package Control para o command palette mostrar as propriedades do PC e escolha a opção Package Control: Install Package.

Após carregar a lista de pacotes, digite o pacote que deseja instalar. O sublime vai carregar o pacote e vai mostrar no rodapé do programa quando o processo for finalizado, pedindo a reinicialização do mesmo.

That’s It !!

Usando Webcam com HTML5 Canvas (Com conversão em base64)

Sem dúvida, o elemento canvas no HTML5 é o recurso que a maioria dos desenvolvedores vai querer usar para desenvolver aplicativos Web realmente ricos – sem precisarem instalar plug-ins de navegador como Flash Player da Adobe. O Canvas nasceu em uma época em que a riqueza do cliente está no foco dos desenvolvedores. Navegadores modernos como o Chrome, Firefox e o Internet Explorer 9 e 10 o suportam. Mas o que exatamente é o elemento canvas em HTML5? Como você o usa para criar aplicativos Web ricos?

Se você não tiver familiaridade com HTML5, antes de se aprofundar neste artigo, deve ler Sim, você pode usar HTML5 hoje! e HTML5 e formas ainda mais extravagantes.

Para que serve o elemento canvas?

Oficialmente, o canvas é “uma tela de bitmap dependente de resolução que pode ser usada para a renderização de elementos gráficos ou outras imagens visuais rapidamente”. Em termos leigos, o canvas é um elemento novo em HTML5, que permite que se desenhem elementos gráficos usando JavaScript. Ele pode ser usado para renderizar texto, imagens, gráficos, linhas gradientes e outros efeitos dinamicamente. Desenhar na tela se dá através da API de tela 2D. Essa API contém uma variedade de funções que fornecem o poder de se desenhar praticamente o que se queira na tela. Atualmente, a tela suporta uma interface 2D, não 3D.

No exemplo de hoje vamos usar o canvas para abrir uma webcam e capturar uma foto e ainda ter o retorno em base64.

Let’s do it !!

Vamos usar dois arquivos ( index.php e webcam.js)

index.php

<!DOCTYPE html>
<html>
<head>
<meta charset=”utf-8″>
<title>eXagon WebCaM Stream</title>
<style>
#container {
width: 500px;
height: 375px;
border: 10px #333 solid;
}
#videoElement {
width: 500px;
height: 375px;
background-color: #666;
}
#canvas {
width: 500px;
height: 375px;
background-color: #CCC;
border: 10px #333 solid;
}
</style>
</head>

<body>
<input id=”fileselect” type=”file” accept=”image/*” capture=”camera”>

<canvas id=”canvas” width=”500″ height=”375″></canvas>
<input type=”button” value=”Capturar” id=”save” />

<br>
<br>

<!– Div onde será renderizada a base 64 –>

Base64

http://webcam.js

</body>
</html>

webcam.js

var video = document.querySelector(“#videoElement”);

navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia || navigator.oGetUserMedia;

if (navigator.getUserMedia) {
navigator.getUserMedia({video: true}, handleVideo, videoError);
}

function handleVideo(stream) {
video.src = window.URL.createObjectURL(stream);
}

function videoError(e) {
// Caso de erro no video
}
var v,canvas,context,w,h;
var imgtag = document.getElementById(‘imgtag’);
var sel = document.getElementById(‘fileselect’);

document.addEventListener(‘DOMContentLoaded’, function(){
v = document.getElementById(‘videoElement’);
canvas = document.getElementById(‘canvas’);
context = canvas.getContext(‘2d’);
w = canvas.width;
h = canvas.height;

},false);

function draw(v,c,w,h) {
if(v.paused || v.ended) return false;
context.drawImage(v,0,0,w,h);
var uri = canvas.toDataURL(“image/jpeg”);
var base64Div = document.getElementById(‘base’);
base64Div.innerText = uri;
imgtag.src = uri;
}

document.getElementById(‘save’).addEventListener(‘click’,function(e){
draw(v,context,w,h);
});

var fr;

sel.addEventListener(‘change’,function(e){
var f = sel.files[0];
fr = new FileReader();
fr.onload = receivedText;
fr.readAsDataURL(f);
})

function receivedText() {
imgtag.src = fr.result;
}

Convertendo imagens em base64 em 5 linguagens diferentes (PHP, C#, Java, Python,JavaScript)

Base64 é um método para codificação de dados para transferência na Internet (codificação MIME para transferência de conteúdo) . É utilizado frequentemente para transmitir dados binários por meios de transmissão que lidam apenas com texto, como por exemplo para enviar arquivos anexos por email.

É constituído por 64 caracteres ([A-Za-z0-9], “/” e “+”) que deram origem ao seu nome. O carácter “=” é utilizado como um sufixo especial e a especificação original (RFC 989) definiu que o símbolo “*” pode ser utilizado para delimitar dados convertidos, mas não criptografados, dentro de um stream.

Exemplo de codificação:

  • Texto original: hello world
  • Texto convertido para Base64: aGVsbG8gd29ybGQK

A codificação Base64 é frequentemente utilizada quando existe uma necessidade de transferência e armazenamento de dados binários para um dispositivo designado para trabalhar com dados textuais. Esta codificação é amplamente utilizada por aplicações em conjunto com a linguagem de marcação XML, possibilitando o armazenamento de dados binários em forma de texto.

Agora vamos converter uma imagem ou arquivo em diversas formas e linguagens :

Let’s do it !!


PHP :

<?php
    // Le a stream do Arquivo e retorna a imagem
    $imagem = file_get_contents('imagem.png');
    //converte a imagem em string base64
    echo base64_encode($imagem);
?>

C#

public string ImageToBase64(Image image, 
  System.Drawing.Imaging.ImageFormat format)
{
  using (MemoryStream ms = new MemoryStream())
  {
    // Convert Image to byte[]
    image.Save(ms, format);
    byte[] imageBytes = ms.ToArray();

    // Convert byte[] to Base64 String
    string base64String = Convert.ToBase64String(imageBytes);
    return base64String;
  }
}

Java

Base64.encode(FileUtils.readFileToByteArray(file));

Python

import base64
imgdata = base64.b64decode(imgstring)
filename = 'image.jpg'  # arquivo
with open(filename, 'wb') as f:
    f.write(imgdata)

JavaScript

function convertImgToBase64(url, callback, outputFormat){
    var canvas = document.createElement('CANVAS'),
        ctx = canvas.getContext('2d'),
        img = new Image;
    img.crossOrigin = 'Anonymous';
    img.onload = function(){
        var dataURL;
        canvas.height = img.height;
        canvas.width = img.width;
        ctx.drawImage(img, 0, 0);
        dataURL = canvas.toDataURL(outputFormat);
        callback.call(this, dataURL);
        canvas = null; 
    };
    img.src = url;
}

That’s it ! 

Até a próxima !

Registrando o Sublime Text 2

O Sublime Text é um editor de texto e código-fonte multiplataforma, escrito em linguagem C++. Inicialmente, o programa foi pensado para ser uma extensão do Vim. Este editor oferece recursos extraordinários e um desempenho simplesmente surpreendente. Hoje em dia muitos programadores (incluindo eu, rsrs) usam este excelente editor de texto para suas tarefas, por ser mais leve, dinâmico, sem muitas features que os IDE’s trazem para o nosso cotidiano de desenvolvimento, que talvez, nós nem utilizamos com frequência.

Pensando nisso, vamos tirar aquele (UNREGISTERED) que aparece na barra superior ? … Mas, lembrando que o sublime é uma ótima ferramenta e não custa ajudar , ele custa apenas $70.


But, LET’s GO !

ATENÇÃO

Para o sistema operacional Windows pode apenas copiar a chave de licença que encontra-se no final deste post.

A licença abaixo funciona em qualquer sistema operacional, mas no linux pode haver problemas para registrar precisando executar os procedimentos abaixo.

fixing sublime text 2 error license key

Abra a pasta onde o sublime foi descompactado /opt/sublime_text_2, dentro desta pasta existirá o executável sublime_text
execute o comando abaixo para editar o stream do binário pela expressão regular :

sudo sed 's/\x33\x42/\x32\x42/g' sublime_text > sublime_crack

Após este comando, o output irá gera um novo arquivo chamado sublime_crack, o qual permitirá você inserir a licença pelo aplicativo.
Execute o comando abaixo para remover o antigo sublime_text e renomear o arquivo sublime_crack :

sudo rm sublime_text && mv sublime_crack sublime_text

Execute o comando chmod abaixo, para torna-lo em um executável :

sudo chmod 777 sublime_text

Agora abra o sublime text e vá até o menu help->Enter License e adicione a licença abaixo:

incluindo o —–BEGIN LICENSE—– e o —–END LICENSE—–

-----BEGIN LICENSE-----
Patrick Carey
Unlimited User License
EA7E-18848
4982D83B6313800EBD801600D7E3CC13
F2CD59825E2B4C4A18490C5815DF68D6
A5EFCC8698CFE589E105EA829C5273C0
C5744F0857FAD2169C88620898C3845A
1F4521CFC160EEC7A9B382DE605C2E6D
DE84CD0160666D30AA8A0C5492D90BB2
75DEFB9FD0275389F74A59BB0CA2B4EF
EA91E646C7F2A688276BCF18E971E372
-----END LICENSE-----

That’s it !


Para usuários do Mac segue os passos para registrar o sublime (Dicas do Leandro Barbosa)

No Mac, acesse o terminal e faça o seguinte:

cd Applications/Sublime\ Text\ 2.app/Contents/MacOS/

sed ‘s/\x33\x42/\x32\x42/g’ Sublime\ Text\ 2 > sublime_crack

mv sublime_crack Sublime\ Text\ 2

Palestra/Curso : Desenvolvimento Android.

A Escola Técnica Estadual (ETEC) de Bebedouro e a Faculdades Integradas FAFIBE organizaram o I Fórum de Tecnologia e tive a honra de ser convidado a estar ministrando um mini curso sobre desenvolvimento em dispositivos móveis Google Android. O curso teve uma grande aceitação dos alunos que participaram, abordamos temas sobre ( Activities, Ciclos, Eventos, POO, etc …), e espero que tenha sido uma boa iniciativa para futuros desenvolvedores de aplicações móveis , não só em Android , mais em outras plataformas também.

Queria também mandar os parabéns aos amigos que participaram (Anderson (Projeto Hadouken em Adobe Flash e ActionScript), Leandro Nischida ( Adobe Photoshop ).

Anderson (Projeto Hadouken), Andréa (Coordenadora de Informática), Leandro Nischida (Publicitário) , e Eu (Desenvolvedor de Sistemas)

Agora estamos organizando juntamente com o coordenador do curso de Sistemas de Informação e o VOL  (Viva o Linux) o dia do Viva o Linux (VOLDay) na Faculdades Integradas FAFIBE.

*Agradecimentos ao grande amigo Alessandro de Oliveira Faria A.K.A Cabelo , Fábio Berbert e ao Jefferson Estanislau da revista Viva o Linux onde escrevi alguns artigos sobre desenvolvimento em Linux.

Comunidade Brasileira de Desenvolvedores