OPENCV
OpenCV com Windows

Até agora, sempre que apresentei um projeto em OpenCV o fiz no linux.

Para aqueles que perderam as referencias dos meus projetos em OpenCV, segue uma lista bem resumida:

Porque fazer no Windows

Agora irei faze-lo no Windows usando o Visual Studio.

Isso se dá porque geralmente eu prefiro o Linux ao Windows para desenvolvimento. A escolha é pessoal, e foi um hábito adquirido, no passar dos anos, pois o Linux, em minha opinião, oferece uma oportunidade maior de crescimento profissional. No que tange aprendizado de baixo nível.

Porem sem querer entrar nas questões de plataforma, há também necessidade, vez ou outra, usar o windows para desenvolvimento.

E para ser sincero, muitas vezes me sinto desconfortável, até pela falta de prática do uso desta plataforma.

Instalando o OPENCV no Windows

Porem para chegar nesse ponto, irei apresentar alguns artigos, que devem ser necessários para este fim.

O primeiro é a instalação do OpenCV e sua respectiva configuração no ambiente windows.

Primeiramente vamos baixar o opencv no site:

https://opencv.org/
Site do OpenCV

Baixe a ultima versão desta lib.

De forma geral ao tentar instalar, ele compacta na pasta: C:\Users\marce\Downloads

Eu costumo mover ele para o raiz do D:\ , no caso, caso não use um segundo disco, faça em seu c:\

Pronto a instalação do OpenCV foi realizada.

Preparando ambiente Visual Studio

Agora vou criar uma pasta VS, dentro do meu D:\opencv\

O C precisa de duas coisas para funcionar, se tratando de bibliotecas, includes e libs.

  • Includes são os cabeçalhos das funções.
  • Libs são os binários (DLLs)

Copiando a pasta include, já marcada acima, dentro do VS.

No caminho D:\opencv\build\x64\vc16 ou equivalente, pois o build contem os arquivos pré compilados, onde no meu caso irei utilizar a plataforma win 64 bits, por isso o X64. Copiarei as pastas bin e lib da pasta, para o VS, conforme mostrado a seguir:

Agora precisamos incluir o caminho completo do bin, nas variáveis de ambiente:

Criando Hello World

Agora vamos dar inicio a criação do projeto no visual studio.

Entre no Visual Studio e crie um projeto.

Agora, selecionamos o tipo de projeto:

Como o visual studio tem muitos templates, é mais fácil pesquisar c++ na aba de pesquisa, e selecionar Projeto Vazio, conforme figura acima.

Digite o nome Hello World no Nome do projeto, conforme apresentado, e o local, indique a sua pasta de projeto. Por fim click no botão CRIAR.

Va na aba de gerenciador de Soluções, e click com botão direito no nome do projeto. Selecione NEW > Novo Item.

Mude para main.cpp e pressione adicionar.

Agora, iremos mudar o projeto, para incluir os locais que criamos no opencv.

Em PROJETO > Pagina de Propriedades, conforme figura abaixo:

Abra a aba C/C++, localize Diretórios de Inclusão Adicionais, incluindo o seguinte item:

Inclua a pasta do include.

Agora vamos adicionar a lib.

Em GERAL > Vinculador , Diretórios de Biblioteca Adicionais

Inclua o a pasta D:\opencv\VS\lib

Agora iremos mostrar qual a lib que será adicionada.

A lib que iremos usar para debug, é opencv_world480d.lib.

Para isso vamos em Propriendades de Configuração > Vinculador > Entrada > Dependências Adicionais.

Pronto agora vamos ao código.

Inclusão do fonte:

Iremos usar o fonte que apontamos no artigo anterior, com uma pequena modificação.


#include <opencv2/opencv.hpp>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>

using namespace cv;
using namespace std;

int main(int, char**)
{
    Mat frame;
    //--- INITIALIZE VIDEOCAPTURE
    VideoCapture cap;
    // open the default camera using default API
    //cap.open(0);
    // OR advance usage: select any API backend
    int deviceID = 0;             // 0 = open default camera
    int apiID = cv::CAP_ANY;      // 0 = autodetect default API
    // open selected camera using selected API
    cap.open(deviceID, apiID);
    // check if we succeeded
    if (!cap.isOpened()) {
        cerr << "ERROR! Unable to open camera\n";
        return -1;
    }

    //--- GRAB AND WRITE LOOP
    cout << "Start grabbing" << endl
        << "Press any key to terminate" << endl;
    for (;;)
    {
        // wait for a new frame from camera and store it into 'frame'
        cap.read(frame);
        // check if we succeeded
        if (frame.empty()) {
            cerr << "ERROR! blank frame grabbed\n";
            break;
        }
        // show live and wait for a key with timeout long enough to show images
        imshow("Live", frame);
        if (waitKey(5) >= 0)
            break;
    }
    // the camera will be deinitialized automatically in VideoCapture destructor
    return 0;
}

Salve o programa, e como de praxe para o windows, reinicie o visual studio, para validar as modificações do ambiente.

Agora é só rodar o OpenCV e pronto.

Por fim para aqueles que quiserem, segue o github:

https://github.com/marcelomaurin/opencvwin

cmusphinx IA Python Reconhecimento de Voz
Instalando Sphinx no Windows

Em artigos anteriores eu apresentei o uso e instalação do CMU Sphinx no Linux.

Neste artigo irei retratar a instalação no windows.

Primeiro baixe o projeto CMU Sphinx do git:

O git do projeto:

https://github.com/cmusphinx/sphinxtrain

Em seguida instale o Visual Studio 2020 Express:

https://visualstudio.microsoft.com/pt-br/vs/express/

Após a instalação, entre no visual studio e abra o projeto sphinxbase, localizado na raiz do projeto.

Agora, já com o projeto do visual studio aberto, compile o sphinx.

Agora é só aguardar a finalização.

Agora é pegar a versão na pasta.

Lembre-se que vc tem as duas opções de compilação DEBUG e RELEASE, em produção sempre compile em RELEASE.

Pronto, agora é só usar, como apresentado na serie de artigos anteriores.

cmusphinx IA Python Reconhecimento de Voz robotinics srvOuve
Reconhecimento de voz – primeiros passos

Iremos falar do processo de instalação do SpeechRecognition.

https://pypi.org/project/SpeechRecognition/

Que permite reconhecer voz e converter para texto, utilizando o google e outros métodos como o CMU Speech.

Instalação no ubuntu:

sudo apt-get install -y portaudio19-dev

sudo apt-get install python3-pyaudio

# pip3 install pyaudio #pode ser usado esse tambem

pip3 install SpeechRecognition

Irei abordar todos estes processos em outros artigos.

Porem neste vamos preparar o ambiente para o uso em python.

Por enquanto é só.

Nos próximos artigos, irei mostrar um pouco mais dos fontes e projetos adjacentes.

IA
Instalando drivers do NEO4J no Python

O procedimento a seguir, mostra como rodar o NEO4J no Python.

Para facilitar um pouco nosso ambiente iremos utilizar o ANACONDA/JUPYTER NOTEBOOK

Primeiro crie uma pasta NEO4J no JUPYTER NOTEBOOK.

Agora, crie uma aplicação Notebook.

E digite:

pip3 install neo4j

IA
Instalação NEO4J

Neo4J é um banco de dados baseado em grafos.

Com ele é possível montar relações baseadas em suas ligações.

Baixando a versão DESKTOP

Entre no site:

https://neo4j.com/

Faça seu cadastro e copie o seu token

Ao finalizar o download, começe instalando o mesmo, preenchendo os dados cadastrais.

Quando solicitado, copie o NEO4J Activation Key.

Por fim , aguarde a finalização da instalação.

IA Python
SPACY – MATCHER

O matcher é um módulo do SPACY destinado a encontrar padrões.

Um exemplo de código:

from spacy.matcher import Matcher

mat = Matcher(nlp.vocab)

padrao =[{"ORTH":"("},"SHAPE":"dd"},{"ORTH":")"},{"ORTH":"-","OP":"?"},{"IS_DIGIT":True})

doc= nlp("Meu telefone é (16) 981434112")

matches= matcher(doc)

for match_id, start, end in mat:
   print(doc[start:end])

Tabela dos padrões do MATCHER

  • ORTH, TEXT – Texto exato
  • LOWER – Forma minuscula
  • LENGTH – Tamanho do texto
  • IS_ALPHA – É caracter
  • IS_ASCII – É ascii
  • IS_DIGIT – É numerico
  • IS_LOWER – é caixa baixa
  • IS_UPPER – É caixa alta
  • IS_TITLE – É um titulo
  • IS_PUNCT – Pontuação
  • IS_SPACE – Espaco
  • IS_STOP – Stop Word
  • IS_SENT_START – Inicio de frase
  • LIKE_NUM – Parece um numero
  • LIKE_URL – Parece um endereço web
  • LIKE_EMAIL – Parece um email
  • SPACY – Tem espaço a direita
  • POS – Tamanho
  • TAG –
  • MORPH –
  • DEP –
  • LEMMA – É lematizado
  • Shape –
  • ENT_TYPE –
  • OP – Operador quantificador

IA Python
SPACY – Analise do texto

Ao digitar no spacy :

 palavras = []
    for token in doc:
         token.pos_

Aparece uma série de abreviações.

Segue o significado destas aqui:

  • ADJ – adjetivo
  • ADP – Aposição
  • ADV – Adverbio
  • AUX – Verbo auxiliar
  • CONJ – Conjunção
  • CCONJ – Conjunção coordenativa
  • DET – Determinante
  • INTJ – Interjeição
  • NOUN – Substantivo
  • NUM – número
  • PART – partícula (se que)
  • PRON – pronome
  • PROPN – Nome proprio
  • PUNCT – Pontuação
  • SCONJ – Conjunção subordinada
  • SYM – Simbolo
  • VERB – verbo
  • X – outros
  • SPACE – espaço

Agora ao digitar:

 palavras = []
    for token in doc:
         token.dep_

Aparece as dependencias, que são abreviações dentro do contexto:

Segue as abreviações:

  • acl – clausula modificadora de nome
  • advcl – clausula modificadora de adverbio
  • advmod – modificadora de adverbio
  • amod – modificador de adjetivo
  • appos – modificador apposicional
  • aux – auxiliar
  • case – marcação de caixa
  • cc – conjunção coordenativa
  • ccomp – clausula complementativa
  • clf – classificador
  • compound – composição
  • conj – conjunção
  • cop – copula
  • csubj – clausula substantiva
  • dep – dependencia não especificada
  • det – determinador
  • discourse – elemento de discurso
  • dislocated – elemento deslocado
  • expl – expletive
  • fixed – expressão multi palavra fixada
  • flat – expressao multi palavra gorda
  • goeswith – indo com
  • iobj – objeto indireto
  • list – lista
  • mark – marcador
  • nmod – modificação nominal
  • nsubj – sujeito nominal
  • nummod – numeric modifier
  • obj – objeto
  • obl – nominal oblico
  • orphan – orfão
  • parataxis – parataxis
  • punct – pontuação
  • reparandum – overridden disfluency
  • root – raiz
  • vocative – vocativo
  • xcomp – open clausal complement
pacotes Programação Yocto Project
Criando um daemon no linux

Daemon são programas que rodam em back ground e que são inicializados e controlados pelo sistema operacional.

Os daemon são geralmente serviços que devem ser gerenciados de forma automatica.

Iremos apresentar aqui um bom exemplo de como criar um daemon.

Para criar um daemon, primeiramente seu binário precisa ser incluído em um local que permita o acesso para qualquer usuário, por este motivo a inclusão na pasta /home/[usuário] não é uma boa pratica. Em geral incluímos em uma pasta como /usr/bin.

Os arquivos de configuração , quando houver, poderão ser incluídos na pasta /etc/[nome daemon].

A criação

A criação do daemon é bem simples.

Crie em /etc/systemd/system/ o arquivo [servido].service, tal como o exemplo do meu git:

https://github.com/marcelomaurin/srvFalar/blob/main/srvfalar/etc/systemd/system/srvfalar.service

Edite o arquivo [servico].service conforme apresentado abaixo:

[Unit]
Description=[Descreva o que faz o servico]
After=network.target

[Service]
ExecStart=/usr/bin/[servico_binario]
Restart=always
User=root
Group=root

[Install]
WantedBy=multi-user.target

Salve o serviço e como sudo dê o seguinte comando:

systemctl daemon-reload

Executando o serviço

Para executar um serviço digite:

systemctrl start [serviço]
pt_BRPortuguese