OpenCV Ubuntu – Tradução

Este link é uma tradução do Seguinte post:

https://www.learnopencv.com/install-opencv3-on-ubuntu/

Neste post, forneceremos instruções passo a passo para instalar o OpenCV 3 (C ++ e Python) no Ubuntu.

Passo1 : Atualização de Pacotes

sudo apto-get update
sudo apto-get upgrade

Passo2: Instalação bibliotecas do SO

Remova qualquer instalação anterior da biblioteca x264 
sudo apt-get remove x264 libx264-dev   
Nos iremos instalar as dependências agora!   
sudo apt-get install build-essential checkinstall cmake pkg-config yasm sudo apt-get install git gfortran 
sudo apt-get install libjpeg8-dev libjasper-dev libpng12-dev   

# Se você esta usando o Ubuntu 14.04 
sudo apt-get install libtiff4-dev 

# If you are using Ubuntu 16.04 
sudo apt-get install libtiff5-dev   

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev 

sudo apt-get install libxine2-dev libv4l-dev 
sudo apt-get install libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev 
sudo apt-get install qt5-default libgtk2.0-dev libtbb-dev 
sudo apt-get install libatlas-base-dev 
sudo apt-get install libfaac-dev libmp3lame-dev libtheora-dev 
sudo apt-get install libvorbis-dev libxvidcore-dev 
sudo apt-get install libopencore-amrnb-dev libopencore-amrwb-dev 
sudo apt-get install x264 v4l-utils   

# Dependências opcionais 
sudo apt-get install libprotobuf-dev protobuf-compiler 
sudo apt-get install libgoogle-glog-dev libgflags-dev 
sudo apt-get install libgphoto2-dev libeigen3-dev libhdf5-dev doxygen

Passo3: Instalação das bibliotecas do Python

sudoapt-get installpython-dev python-pip python3-dev python3-pip sudo-H pip2 install-U pip numpy sudo-H pip3 install-U pip numpy

Nós usaremos o Ambiente virtual para instalar as bibliotecas do Python. Geralmente é uma boa prática separar o ambiente do seu projeto e o ambiente global.

# Instale o ambiente virtual
sudo pip2 installvirtualenv virtualenvwrapper 
sudo pip3 installvirtualenv virtualenvwrapper 

echo"# Virtual Environment Wrapper">> ~/.bashrc 

echo"source /usr/local/bin/virtualenvwrapper.sh">> ~/.bashrc source~/.bashrc   

############ No Python 2 ############ 
# Crie o ambiente virtual 
mkvirtualenv facecourse-py2 -p python2 
workon facecourse-py2   

# Agora instale as bibliotecas do python com o ambiente virtual
pip installnumpy scipy matplotlib scikit-image scikit-learn ipython   

# desative o ambiente virtual 
deactivate
######################################   
############ No Python 3 ############ 

# Crie o ambiente virtual 
mkvirtualenv facecourse-py3 -p python3 
workon facecourse-py3   

# Agora instale as bibliotecas do python com o ambiente virtual
pip install numpy scipy matplotlib scikit-image scikit-learn ipython   # desative o ambiente virtual
######################################

Nós iremos baixar os pacotes opencv e opencv_contrib de seus repositórios do GitHub.

Passo 4.1: Baixe o Opencv do Github

git clone https://github.com/opencv/opencv.git
cdopencv  git checkout 3.3.1  cd..

Passo 4.2: Baixe opencv_contrib do Github

git clone https://github.com/opencv/opencv_contrib.git cdopencv_contrib git checkout 3.3.1 cd..

Passo 5: Compile e instale o OpenCV com os modelos de contribuição

Passo 5.1: Gere um diretório build

cd opencv 
mkdir build 
cd build

Passo 5.2: Execute o CMake

cmake -D CMAKE_BUILD_TYPE=RELEASE \
       -D CMAKE_INSTALL_PREFIX=/usr/local\
       -D INSTALL_C_EXAMPLES=ON \
       -D INSTALL_PYTHON_EXAMPLES=ON \
       -D WITH_TBB=ON \
       -D WITH_V4L=ON \
       -D WITH_QT=ON \
       -D WITH_OPENGL=ON \
       -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules\
       -D BUILD_EXAMPLES=ON ..

 Passo 5.3: Compile e Instale

# Encontre o numero de núcleos do seu computador
nproc

# Substitua o 4 pelo resultado obtido em nproc
make -j4

sudo make install

sudo sh -c 'echo "/usr/local/lib" >> /etc/ld.so.conf.d/opencv.conf'

sudo ldconfig

Passo 5.4: Crie um link simbólico no ambiente virtual

Dependendo da versão do Python, os caminhos seriam diferentes.

O binário Python do OpenCV (cv2.so) pode ser instalado no diretório site-packages ou dist-packages.

Use o seguinte comando para descobrir o local correto em sua máquina.

find /usr/local/lib/ -type f -name "cv2*.so"

Ele deve gerar caminhos semelhantes a um desses (ou dois no caso de o OpenCV ter sido compilado para Python2 e Python3):

###### No Python 2 ############
## binary installed in dist-packages
/usr/local/lib/python2.6/dist-packages/cv2.so
/usr/local/lib/python2.7/dist-packages/cv2.so

## Binarios instalados no site de pacotes
/usr/local/lib/python2.6/site-packages/cv2.so
/usr/local/lib/python2.7/site-packages/cv2.so

############ No Python 3 ############
## binary installed in dist-packages
/usr/local/lib/python3.5/dist-packages/cv2.cpython-35m-x86_64-linux-gnu.so
/usr/local/lib/python3.6/dist-packages/cv2.cpython-36m-x86_64-linux-gnu.so
## Binarios instalados no site de pacotes
/usr/local/lib/python3.5/site-packages/cv2.cpython-35m-x86_64-linux-gnu.so
/usr/local/lib/python3.6/site-packages/cv2.cpython-36m-x86_64-linux-gnu.so

Verifique novamente o caminho exato em sua máquina antes de executar os seguintes comandos

############ No Python 2 ############
cd ~/.virtualenvs/facecourse-py2/lib/python2.7/site-packages
ln -s /usr/local/lib/python2.7/dist-packages/cv2.so cv2.so  

############ No Python 3 ############
cd ~/.virtualenvs/facecourse-py3/lib/python3.6/site-packages
ln -s /usr/local/lib/python3.6/dist-packages/cv2.cpython-36m-x86_64-linux-gnu.so cv2.so

 Passo 6: Teste o OpenCV3

Vamos testar um aplicativo de remoção de olhos vermelhos escrito em OpenCV para testar nossas instalações em C ++ e Python.

Faça o download do RedEyeRemover.zip e extraia-o em uma pasta.

Passo 6.1: Teste o código C++

Vá na pasta descompassada, compile e execute.

# Compile
# Existem backticks ( ` ) ao redor do comando pkg-config command não é aspas simples
g++ -std=c++11 removeRedEyes.cpp `pkg-config --libs --cflags opencv` -o removeRedEyes
# run
./removeRedEyes

Passo 6.2: Teste o código em Python

Ative o ambiente virtual do Python
############ No Python 2 ############
workon facecourse-py2

############ No Python 3 ############
workon facecourse-py3
Checarem rápida
# open ipython (execute esta linha no console)
ipython

# import cv2 and print version (run following commands in ipython)
importcv2
print cv2.__version__

# Se o OpenCV3 estiver instalado corretamente,
# na linha de comando aparecerá a saída 3.3.1

# Pressione CTRL+D para sair do ipython

Para executar  o removedor de olhos vermelhos

python removeRedEyes.py

Agora você pode sair do ambiente virtual do Python

deactivate

Sempre que você estiver executando scripts Python que usam o OpenCV, você deve ativar o ambiente virtual que criamos, usando o comando workon.

Registre-se e baixe o código

Se você gostou deste artigo e gostaria de baixar o código (C ++ e Python) e as imagens de exemplo usadas em todas as postagens deste blog, assine a nossa newsletter.

Você também receberá um Guia de Recursos do Computer Vision gratuito. Em nossa newsletter, compartilhamos os tutoriais e exemplos do OpenCV escritos em C ++ / Python e os algoritmos e notícias do Computer Vision e Machine Learning.

Registre-se agora

Tradução

Duvidas ou problemas de tradução, envie um email para mim

Processamento de Imagem de CFTV 2.0

 

Informações pertinentes ao processamento de imagem

import sys
import numpy as np
import cv2
import MySQLdb

def conexao():
 Banco="banco"
 User="usuario"
 Passwrd="senha"
 Host="ip"
 resultado = 0

try:
 resultado = MySQLdb.connect(db=Banco,user=User, passwd=Passwrd, host=Host)
 except:
 print("Erro ao conectar no Banco de dados")
 resultado = -1
 return resultado



def GravaReg(arquivo,x,y,a,h):
 con = conexao()
 cursor = con.cursor()
 sql= "insert into eventoCam (arquivo,x,y,a,h) values ('%s',%d,%d,%d,%d)" %(arquivo,x,y,a,h)
 print(sql)
 try:
 cursor.execute(sql)
 con.commit()
 print("Registro Gravado")
 except MySQLdb as erro:
 print("Erro ao Executar SQL", erro)
 
#Pega o nome do arquivo a ser analisado
Arquivo = sys.argv[1]

# load an color image in grayscale
img = cv2.imread(Arquivo)
print("Carregado:%s",Arquivo)

classificador = cv2.CascadeClassifier("/projetos/python/cv/face.xml")



imagemCinza = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

facesDetectadas = classificador.detectMultiScale(imagemCinza, scaleFactor=1.5, minSize=(100,100))

for (x,y,l, a ) in facesDetectadas:
 print("Face:",x,y)
 GravaReg(Arquivo,x,y,l,a)



cv2.destroyAllWindows()
print("Finalizou")

Arquivo de script do Motion, bash para processamento de imagem

#!/bin/bash#!/bin/bash

quebrar() {
 local filepath="$1" local filename=$(basename "$filepath") 
 local ext=$(echo "$filename"| awk -F '.' '{ if (NF==2) {print $NF} else if ( NF>2) {print $(NF-1)"."$NF} }') 
 local dir=$(echo "$filepath" | awk -F '/' '{ print substr($0, 0 , length($0)-length($NF)-1) }') 
 echo -e "$dir""\t""$filename""\t""$ext"
}

ret="$(quebrar "$1")"
echo "$diretorio: " "$(echo "$ret" | cut -f1)"
diretorio="$(echo "$ret"|cut -f1)"
filename="$(echo "$ret"| cut -f2)"
somentefilename="$(echo "$filename"| cut -d. -f1)"
extensao="$(echo "$filename"| cut -d. -f2)"
novoarquivo="$(echo "$1"| cut -d. -f1)"
novoarquivo="$(echo "$novoarquivo"".mp4")"
#echo "Desmembramento do arquivo"
#echo $diretorio
#echo $somentefilename
#echo $extensao
#echo $filenameecho $novoarquivo

#ffmpeg  -i $1 -c:v libx264 -preset ultrafast $novoarquivo
python /projetos/python/cv/load.py $novoarquivo

rm -f $1

 

Reconhecimento de Imagem em Python

Arquivo completo: cv

Este programa permite detectar faces em um sistema de CFTV, permitindo a o posterior reconhecimento.

Roda em linux e Windows

import sys
import numpy as np
import cv2

#Pega o nome do arquivo a ser analisado
Arquivo = sys.argv[1]

# load an color image in grayscale
img = cv2.imread(Arquivo)
print("Carregado:%s",Arquivo)

classificador = cv2.CascadeClassifier("/projetos/python/cv/face.xml")



imagemCinza = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

facesDetectadas = classificador.detectMultiScale(imagemCinza, scaleFactor=1.5, minSize=(100,100))

for (x,y,l, a ) in facesDetectadas:
 print("Face:",x,y)

cv2.destroyAllWindows()
print("Finalizou")

 

Este exemplo simples é utilizado no sistema de identificação de CFTV de minha casa.

 

Python Exemplo de Arquivo

Exemplo de criação de Arquivo em Python

 

#Criando Python estrutura de Arquivos

#Estrutura de Log
#criado por Marcelo Maurin Martins

import sys

 

#Abre log
def AbreLog():
return(open(“analisa.log”,”r”))

 

def FechaLog(Log):
Log.close()

def processalinha(linha):
output = linha #por enquanto nao faz nada
print(“Linha:”,linha)
return output

def LeLog(Log):
for linha in Log.readlines():
processalinha(linha)

def CriaLog():
Log = open(“analisa.log”,”w”)
for conta in [1,2,3,4,5,6,7,8,9,10]:
Log.write(“teste\n”)
FechaLog(Log)

def main():
print(“Programa de analise de Dados”)
CriaLog()
Log = AbreLog()
LeLog(Log)
FechaLog(Log)

#inicia
main()

Exemplo de dicionário em Python

Segue exemplo de Dicionário em Python

#criado por marcelo maurin
 #14/04/2018

dic_Apps={
 1:"Arduino",
 2:"Delphi",
 3:"C##",
 4:"c++",
 5:"PYTHON"
 }

print("Imprimindo:")
 print("Dicionario:",dic_Apps)
 print("Chaves:",dic_Apps.keys())
 print("Valores:",dic_Apps.values())
 print("Todos itens:",dic_Apps.items())

for chave in dic_Apps.keys():
 print("chave:",chave)
 for valor in dic_Apps.values():
 print("Valor:",valor)
 for item in dic_Apps.items():
 print("Item:",item)

Programação PHP Integrada ao R

O Desenvolvimento e analise de dados não é tarefa fácil.

Integrar o R com outras linguagens é o segredo para analisar grande volume de dados em tempo real, gerando vetores e gráficos.

Um exemplo deste é a Webapi que criei para linguagem PHP:

http://maurinsoft.com.br:8090/ws/graphic.php

Esta web api, gera um arquivo de imagem com um gráfico.

Ao chamar o URL, é chamado em tempo de execução um script em R, que gera a imagem e armazena em um repositório.

É possível criar diversos scripts com o mesmo URL, basta indicar nos parametros o script em R que deverá ser rodado.

No caso do default.R, lê as informações processadas do sensor de chuva, que aponta quando ocorre precipitação de chuva em minha casa.

Valore altos de 900 até 1024, indicam tempo seco.

A imagem é armazenada neste endereço.

Neste exemplo, o R processou o seguinte comando SQL

select

devvalue, dtupdate

from logdevpar

where

devparname=’dev3′

and iddevice=’2′

and (dtupdate>=( DATE_SUB(CONCAT(CURDATE(), ‘ 00:00:00’), INTERVAL 1 DAY) ))

order by dtupdate

limit 100

 

Exemplo de script de Tabela

Segue um exemplo criado por mim, para criar uma tabela no Mysql

 

#Criando Tabela Parametros de Devices

use casadb;

CREATE TABLE devpar (

iddevpar INT NOT NULL AUTO_INCREMENT PRIMARY KEY, iddevice int not null,

devparname VARCHAR(25),

devparobs  VARCHAR(500),

devvalue VARCHAR(500)

);

#Cria Indices para pesquisa

CREATE INDEX idx_devpar_iddevpar ON devpar(iddevpar);

CREATE INDEX idx_devpar_iddevice ON devpar(iddevice);

#Cria chaves estrangeiras

ALTER TABLE devpar

ADD CONSTRAINT fk_devpar_iddevice

FOREIGN KEY ( iddevice )

REFERENCES devices ( iddevice );