Como criar um aplicativo MAC

Em lazarus após compilar um binário no MAC é necessário criar um pacote (PKG), para tanto realize as seguintes operações:

  1. Entre no MAC OS X
  2. Selecione o PackageMaker para dar inicio a criação do pacote

Esta ferramenta(PackageMaker), permite através de uma interface gráfica, criar pacotes de instalação do seu aplicativo.

3. Crie uma pasta para seu novo instalador, conforme a figura abaixo:

 

Selecione a distribuição e modifique as informações sobre o pacote:

  • Título
  • User Sees
  • Install Destination
  • Certificate
  • Description

Conforme sua necessidade, na figura abaixo, estamos gerando um exemplo de projeto criado:

Agora inclua os fontes que precisa utilizar, na pasta Contents, conforme ilustração abaixo:

São informações pertinentes o Destination, que informa o local da instalação.

Agora na pasta Contents, click no botão Apply Recommendations, pronto!

Faça isso para todos os arquivos, e ao fim click em Build.

Você pode customizar também a Interface, clicando em Edit Interface, conforme figura abaixo:

 

 

Referencia: http://ptcomputador.com/Sistemas/mac-os/206825.html

Lazarus no MAC

O desenvolvimento de aplicações multiplataforma nunca foi tarefa fácil.


Os obstáculos para criação de ferramentas homogêneas multiplataforma, sempre foram questão de grande comoção e tem sido pungente sua necessidade.

Até a bem pouco tempo atras,  o JAVA era uma das poucas linguagens que cumpria com certo grau de satisfação essa tarefa.

Porem, há alguns anos o Lazarus, uma IDE, baseada em Pascal Objects, tem evoluído  e hoje torna-se uma referencia para desenvolvimento multiplataforma.

Com uma interface muito próxima ao antigo Delphi, e com código nativo, os projetos em Lazarus agregam performance e estabilidade.

Porem, há ainda um longo caminho a ser vencido, no tocante a uma ferramenta  multiplataforma realmente eficiente.

Mas gostaria de deixar meu comentário, e quem sabe ser mais um que um deslumbre de um  futuro promissor para o Lazarus, onde este ecoará entre as ferramentas de ponta do mercado.

Vamos acompanhar sua evolução na esperança que esta promessa se cumpra.

 

Usando o GITHUB

Estaremos apresentando aqui a segunda parte do projeto git.

 
Onde usaremos as funcionalidades diretamente no meu repositório git:

https://github.com/MarceloMaurin/srvSMS

Para tanto primeiro precisaremos baixar a versão do nosso repositório, clonando ele localmente:

git clone https://github.com/MarceloMaurin/srvSMS

Se estiver no linux, o ideal é estar como super user (root).

Agora, precisamos entrar na pasta do projeto criado, digitando:

  cd srvSMS

Em seguida um ls para listar os arquivos:

Se dermos um make compile, no nosso projeto verificaremos dois erros no arquivo srvSMS.c, conforme apresentado na figura abaixo:

Para corrigir este problema, irei realizar a seguinte atividade:

  1. Criar um branch BUG01
  2. Correção do problema
  3. Subir o Branch
  4. Atualizar a MASTER com o Branch corrigido.

Criando um branch BUG01

Para criar um branch, edite o seguinte comando:

git branch BUG01

Agora, precisamos apontar para esta branch, para tal, damos o seguinte comando:

git branch BUG01

Para confirmar que houve a alteração, vemos qual o branch ativo, através do comando:

git branch

Segue um exemplo dos comandos realizados:

Correção do problema

No nosso código, podemos inicialmente ver, que ambos os warnnings são simples “esquecimentos”:

Onde o primeiro, faltou declarar o parametro job_telefone.

Já corrigido o segundo erro, tratamos de gravar com :wq (vi)

Desta forma, temos uma versão corrigida do problema.

Para confirmar, realizamos a compilação:

Para finalizar, realizamos o commit das mudanças, dando o comando:

git commit -m "motivo do commit"

Caso, ainda não tenha definido as variaveis globais, defina antes do commit:

git config --global user.name "seu nome"

git config --global user.email "seu email"

Conforme figura abaixo, o resultado do commit:

Subir o Branch

Agora, iremos subir o código para o branch, para tal, precisamos dar o comando :

git push -u origin BUG01

 

Atualizar a MASTER com o Branch corrigido

Para realizar a finalização, atualizando o master com a mudança do branch, precisamos primeiro pegar a master

git checkout master

Em seguida atualizar a master com as mudanças da branch que gerei (BUG01)

git merge BUG01

e por fim, commitar as mudanças para o servidor

git push

 

Atualização  do GITHUB

Por vezes, precisamos atualizar uma cópia local com a ultima versão do GITHUB, para tanto, precisamos puxar as atualizações do servidor para a maquina local.

Para tanto, usamos o seguinte comando:

git pull

 

 

Extra Manipulação de Branch

Para manipular as branches use os seguintes comandos:

Renomear a branch atual

git branch -m <nome-branch>

 

Apagar uma branch do servidor github

git push origin --delete <branch>

ou apenas do local por

git branch -d BUG01

Fazendo Merge pela interface gráfica

Para usar a interface gráfica, siga os passos:

Usaremos o winmerge como modelo de merge:

Download: http://winmerge.org/?lang=pt_br

ou no repositório Source Forge:

https://sourceforge.net/projects/winmerge/

Configure a ferramenta, pelo comando:

git config --global --add merge.tool winmerge
git config --global -add mergetool.winmerge.path "C:\Program Files (x86)\WinMerge"

Para chamar o winmerge, chame o git na sintaxe:

git mergetool

Criar uma TAG

Tag é uma marcação para criação de pacotes.

Sua sintaxe:

git tag <nome da tag> [<hash do branch>]

Para listar :

git tag

Para subir ao servidor:

git push --origen <tag>

Apagar tag

git tag -d <tag>

Apagar do servidor

git push --origen --delete <tag>

 

Dica para substituir o Visio

Uma boa dica para montagem de diagramas como o visio é o site https://www.draw.io/

Este site se conecta a sua conta do google drive, permitindo que voce crie pelo browser diagramas de uma variedade incrível e totalmente gratuito.

Com uma interface muito semelhante ao visio da microsoft, o draw é uma boa pedida para este fim.

 

 

GIT

GIT oque é

GIT é uma ferramenta multi plataforma de controle e versionamento de fontes de programas.

Download

Entre no site https://git-scm.com/ e baixe a versão mais nova em sua plataforma.

Instalação

Linux/Debian

Para instalar o git no linux/Debian basta dar:

 apt-get install git

Mac

Para instalar o git no mac, baixe o instalador desta plataforma e rode. Voce vai precisar autorizar em security;

No windows

Baixe a aplicação e execute o mesmo, seguindo, next , next , finish.

Configuração do GIT

Git Bash

Interface nativa do git colorida

Semelhante ao prompt do cmd, porem tem cores que mostram detalhes da interface.

Para utilizar, entre na pasta que utilizará o git, botão direito, e adicione git bash here, conforme figura acima.

Atribuindo usuário

git config --global user.name "nomeuser"

Atribuindo email

git config --global user.email "marcelomaurinmartins@gmail.com"

Vendo configurações

git config --global --list

Criando um repositório

O Repositório adiciona e controla seus fontes do projeto

cd pasta_do_rep

git init

Adicionando arquivos no git

git add nome_arquivo

ou apenas os do tipo pas

git add *.pas

ou para todos os arquivos

git add --all

Status do Repositorios

Para verificar o status do repositório local com relação ao servidor, faça:

git status

 

Fazendo Commit

O Commit é o ato de enviar suas atualizações para o servidor.

para tal, faça:

git commit -m "Notas de mudança"

Vendo Histórico LOG

git log

No exemplo a baixo, podemos ver as informações de cada commit realizado.Neste exemplo, cada commit gerou um hash de commit, que pode posteriormente ser utilizado para comparação.

Caso queira mais informações, use:

git log --stat

 

Comparar commit

Para comparar commit, realize a seguinte operação:

git diff <commit1> <commit2>

Usando o log, podemos pegar os hash destes commits.

Ficando como se segue:

Checkout de versão

Voltar uma versão do git anterior

git checkout -b <hash>

para o ultimo (master), atual!

git checkout master

para reverter apenas um arquivo

git checkout <arquivo>

para reverter todos

git reset --hard

Para limpar os arquivos não rastreados, novos

get clean -f

ou para ver a opção de menu (interativo)

get clean -i

Criando lista de tipos inválidos para git

Para criar uma lista de tipos (extensões) invalidos no git, crie um arquivo no windows .gitignore.

ou no linux .gitignore 

No arquivo, .gitignore faça uma lista, como se segue.

.java

.exe

.dll

Removendo os arquivos executáveis do rastreamento

git rm -r --cached *.exe

Clonando Repositório

Para clonar um repositório, faça a seguinte sintaxe:

git clone <url_ou_diretorio_git>

Comando push

O Comando push, é utilizado para subir para o servidor todos os commits dados na maquina, sua sintaxe é:

git push

 

Meus projetos no GIT

Segue meu perfil no GIT:

https://github.com/MarceloMaurin

Peço desculpas aos colegas, a maioria dos meus projetos ainda não estão no GIT.

Estou como tantos outros, migrando meus projetos para o GIT.

Atualmente uso o source forge:

https://sourceforge.net/u/mmaurinmartins/profile

 

Nos próximos artigos, estarei mostrando como atualizar um repositório no servidor github.

 

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.