sexta-feira, 3 de março de 2017

Identificação de faces usando Python e OpenCV

Se você acompanhou o post anterior (sobre a instalação do Python e OpenCV) e instalou a sua versão, então você pode experimentar um simples programa que faz identificação de faces em Python. Segue o código:
import cv2
arqCasc = 'haarcascade_frontalface_default.xml'
faceCascade = cv2.CascadeClassifier(arqCasc)
webcam = cv2.VideoCapture(0)  #instancia o uso da webcam
while True:
    s, imagem = webcam.read() #pega efeticamente a imagem da webcam
    imagem = cv2.flip(imagem,180) #espelha a imagem
    faces = faceCascade.detectMultiScale(
        imagem,
        minNeighbors=5,
        minSize=(30, 30),
maxSize=(200,200)
    )
    # Desenha um retângulo nas faces detectadas
    for (x, y, w, h) in faces:
        cv2.rectangle(imagem, (x, y), (x+w, y+h), (0, 255, 0), 2)
    cv2.imshow('Video', imagem) #mostra a imagem captura na janela
    #o trecho seguinte é apenas para parar o código e fechar a janela
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
webcam.release()         #dispensa o uso da webcam
cv2.destroyAllWindows() #fecha todas a janelas abertas
# ------------------------------------------------------------------------------------

Para este programa funcionar, é necessário acrescentar na mesma pasta o arquivo  "haarcascade_frontalface_default.xml"   que é o arquivo em formato de banco de dados que traz os vetores do Classificador de faces haar cascade.  O link para baixar este arquivo está aqui: Arquivo Classificador haar cascade

O resultado deve ser este da foto a seguir: o programa abre a imagem da sua webcam na tela e vai encontrar seu rosto, desenhando um retângulo em volta.  Veja a foto:
Figura 1- Script que faz a detecção de faces em funcionamento.

Se você desejar detectar outros elementos (que não seja a face humana) como por exemplo: nariz, olhos, pedestres andando na rua, relógio de parede, etc,  você encontra uma coleção de arquivos Classificadores Haar Cascade neste site:  Site com diversos arquivos .xml  com bancos de dados para Classificadores Haar Cascade  para SimpleCV e OpenCV:

Como instalar o Python, OpenCV e todas as suas dependências no Windows de 64-bit

Neste Tutorial pretendo descrever uma passo-a-passo sobre como instalar o Python versão 2.7.6 para Windows 64-bit (estou usando aqui no Windows 10 64-bit), bem como a biblioteca para Processamento de Imagens OpenCV compatível com esta mesma versão.
Para instalar a biblioteca OpenCV é necessário antes instalar algumas dependências, que são:
- A biblioteca para trabalhar com matrizes numéricas:  Numpy
- A biblioteca para plotar gráficos: Matplotlib

Vou descrever uma sequencia de passos para instalar bibliotecas e dependências todas compatíveis entre si.

Primeiro, instale o Python versão 2.7.6 obtido neste link: http://www.lfd.uci.edu/~gohlke/pythonlibs/
A versão que estou usando é EXATAMENTE esta:   python-2.7.6.amd64.msi

O fato de ser um arquivo .msi  significa que trata-se de um pacote pronto para instalação no Windows 64-bit

Para que este tutorial seja útil para você, é extremamente importante que você instale EXATAMENTE as versões que são descritas aqui.  Tive muitos problemas com versões diferentes de bibliotecas, que são todas incompatíveis entre si, e estou escrevendo este tutorial para que você não passe pelo que eu passei até achar as versões compatíveis com cada coisa.

As versões 2.7.9 e versão 3.4 do Python já tem o instalador "pip" internamente.
Mas a versão 2.7.6  que recomendarei neste tutorial (pelo fato de ser para Windows 64-bit, foi a única que eu achei que está compilada para Windows 64-bit...) não tem.
Então você precisará instalar o aplicativo "pip" primeiramente dentro do python.
O  "PIP" é um descompactador e instalador de arquivos do Python, que roda no terminal do DOS.

As versões que são compatíveis entre si e com o Python 2.7.6  indicado  são:

NUMPY
 numpy-1.12.0+mkl-cp27-cp27m-win_amd64.whl

MATPLOTLIB
matplotlib-2.0.0-cp27-cp27m-win_amd64.whl

OPENCV
opencv_python-3.1.0-cp27-cp27m-win_amd64.whl


Instalação passo-a-passo
------------------------------------------------------
As dependencias do OpenCV são arquivos do tipo .whl, então você vai precisar do instalador "pip" do Python para instalar arquivos tipo .whl


1. baixar get-pip.py  neste  site:   https://bootstrap.pypa.io/get-pip.py
   Copie a pasta   get-pip.py    dentro  de    >C:\python27\

2. Instalar o  get-pip.py  no diretorio  python27

       >C:\python27\ python  get-pip.py

3. para atualizar o pip no windows (as vezes não é necessário):

       >C:\python27\   python -m pip install -U pip

4. O pip será instalado dentro de uma pasta chamada Scripts (com "S" maiusculo)
   Existe outra pasta scripts com "s" minusculo, não é essa.

       >C:\python27\Scripts

5. O "pip" só funciona se executado de dentro da pasta Scripts
(observe que o aplicativo "pip.exe" existe somente dentro da Pasta Scripts)


6. Baixar os arquivos a partir deste site:  http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy
    Para instalar os pacotes:

7.  De dentro da Pasta   >C:python27\Scripts    digite:


pip install  numpy-1.12.0+mkl-cp27-cp27m-win_amd64.whl

pip install matplotlib-2.0.0-cp27-cp27m-win_amd64.whl

pip install opencv_python-3.1.0-cp27-cp27m-win_amd64.whl
------------------------------------------------------------------------------------------------------------

Baixe aqui TUDO o que você precisa para instalar o Python 64-bit com OpenCV
Python 2.7.6 64-bit + OpenCv + Numpy + MatplotLib
--------------------------------------------------------------------------------------------------------------
Links importantes:
Instalando o PIP  para o Python
https://pip.pypa.io/en/stable/installing/

TODOS OS ARQUIVOS PYTHON PARA 64 BITS
http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy

COMO INSTALAR O OPENCV
https://rogerresmini.wordpress.com/2013/12/30/instalacao-do-opencv-no-windows-7-64bits-com-mingw-w64/
----------------------------------------------------------------------------------------------------------

segunda-feira, 13 de fevereiro de 2017

Software para calcular Área, Angulos e Alturas de um Triângulo qualquer

Este programa (em anexo) pede que o usuário digite as medidas dos 3 lados de um Triângulo qualquer: Lado AB, Lado BC e Lado AC.   O triângulo pode ser qualquer (não é necessário que seja retângulo ou isósceles).  Uma vez digitada as 3 medidas dos lados, o usuário aperta o botão "CALCULAR" e o programa calcula automaticamente a área, os 3 ângulos internos e também as três alturas do Triângulo, relativas a cada uma das bases. ATENÇÃO:  Use "," (vírgula) e  não  ponto decimal, ao digitar os números.  O programa foi escrito no Microsoft Visual C# Studio Express (gratuito) por isso a pasta vem com vários arquivos (é preciso enviar o manifesto juntamente com o código .exe executável). O programa está em sua versão inicial e não checa a validade dos dados que foram digitados. Assim, por exemplo, se o usuário digitar  5,  5,  10   isso obviamente não forma um triângulo porque  5+5 não é maior do que 10 (o triângulo não fecha) e o resultado será 0 para todos os campos e 180graus para apenas um dos ângulos. Experimentem e comentem.
Figura 1: Aspecto da IDE do programa

O link para fazer o download (gratuito) é esse:  programa WinTraingulo

https://drive.google.com/file/d/0B0T8omiWkMq8UUluWndlSFhYbG8/view?usp=sharing

Para quem quiser melhorar o código-fonte, fique à vontade, ele está aqui:  https://github.com/ffambrini/Triangulo


domingo, 3 de abril de 2016

Aula 1- Eletrônica Digital

Material referente à aula 1 de Eletrônica Digital, Curso de Pós Graduação em Eletrônica Embarcada, Unisal, Campinas.Aula 1 - Eletrônica digital