Sunday, January 1, 2017

Instalando OpenCV 2.4.3 para Windows

Ao iniciar os estudos para meu TCC, que envolve manipulação de imagens, tive de instalar o OpenCV na minha máquina porém notei que é um mais complexo que imaginei para instalar, e vi que tem pouco material sobre OpenCV em português, portanto, vou ensinar aqui a maneira que instalei e alguns problemas que passei durante a instalação.

Em primeiro lugar, baixei a versão 2.4 pois a versão 3 não consegui buildar e vi algumas pessoas como mesmo problema, então caso esteja com problemas para buildar o opencv e esteja utilizando a versão 3 pode ser este o seu problema.

Para instalar o OpenCV, é necessário baixar 3 programas
Caso você possua alguma IDE com o MinGW, recomendo desinstalar, pois ja tive problemas assim.

Primeiro vamos instalar o MinGW:
Após selecionar a pasta e instalar o manager, clique em continue
Os pacotes necessários são o mingw-gcc-g++ e o mingw-base, o resto é opcional


Após selecionar os pacotes, vá em Installation->Apply Changes
 Após concluir a instalação do MinGW, adicione o path às variáveis de ambiente do windows.
Para isso, clique com botão direito no Meu Computador, vá em Propriedades->Configurações avançadas->Variáveis de ambiente e edite o PATH das variáveis do sistema e adicione o diretório bin que está dentro da pasta MinGW, no meu caso, C:\MinGW\bin

Para conferir se a variável foi setada, abra um cmd e digite path para listar as variáveis. os diretórios inseridos devem estar na lista, caso contrário, reinicie o computador e verifique novamente.

Agora que o MinGW já foi instalado e configurado,instale o CMake, que não tem segredos. Então, vamos instalar o OpenCV
Extraia o arquivo para uma pasta raiz (já tive problema com extensão muito longa de arquivos, portanto é interessante manter o diretório o mais curto possível).
Após extrair, abra o CMake e no campo Source, coloque o diretório .../OpenCV/sources
No campo Build, coloque o diretório .../OpenCV/build/x86/mingw e clique em Generate e espere o CMake fazer o trabalho dele.
Após ter feito isto, vamos na pasta do MinGW e procurar um arquivo chamado commctrl.h e edita-lo (tive de fazer isso para arrumar um problema que tive durante a build)
Abra-o e procure esta linha que deve estar logo no começo
edite o if para 1 e o 0x0300 para 0x0500. Deve ficar assim
 Feito isso, vamos na pasta do OpenCV que criamos com o CMake .../OpenCV/build/x86/mingw. Na pasta, aperte SHIFT e clique com o botão direito para abrir um cmd já na pasta.
 abrindo o cmd, digite g++ --version para verificar se o MinGW foi instalado corretamente. Se foi instalado corretamente, deve aparecer a seguinte mensagem
Agora para construir o opencv, digite mingw32-make. O processo demora um pouco para completar. Na minha máquina demorou cerca de 30 minutos
Após o opencv ser construido, vamos inserir uma nova variável de ambiente para o opencv (se não inserir, ao tentar executar um projeto, o windows não vai encontrar alguns dlls e o projeto não será executado.) a variável é .../OpenCV/build/x86/mingw/bin
Assim como anteriormente, verifique em um cmd o path se está setado.
Agora o seu OpenCV já deve estar funcionando corretamente. Vamos testar com um projeto "hello world do opencv" que é um programa simples que abre uma imagem utilizando o opencv.
Instale o CodeBlocs sem compilador e configure para utilizar o MinGW instalado.
Crie um projeto 
Após criar o projeto, devemos configurar o projeto para que seja utilizado as bibliotecas do opencv.
Para isso, clique com o botão direito no projeto e vá em Build Options
 Vá na aba Search Directories -> Compiler e adicione o diretório .../OpenCV/build/include 
 Agora na aba Linker, adicione o diretório .../OpenCV/build/x86/mingw/lib  
 Na aba Linker Settings adicione todos os arquivos que estão dentro da pasta .../OpenCV/build/x86/mingw/lib  
 Agora que o projeto está configurado (você pode coloca-lo como um projeto padrão para que não precise configurar outros projetos futuros) vamos para o código:
coloque este código no seu projeto e execute:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>

using namespace cv;

int main()
{
    Mat image;// new blank image
    image = cv::imread("test.png", 0);// read the file
    namedWindow( "Display window", CV_WINDOW_AUTOSIZE );// create a window for display.
    imshow( "Display window", image );// show our image inside it.
    waitKey(0);// wait for a keystroke in the window
    return 0;
}

Coloque uma imagem com o nome test.png na pasta de seu projeto e compile e execute. Pronto!

Wednesday, March 25, 2015

Problemas com divisão no Visualg

 Como voces ja devem saber, o Visualg executa operações matemáticas obedecendo os conjuntos numéricos.
 Em alguns exercícios que irei postas, é pedido o numero inteiro de uma divisão.. O problema aparece quando a divisão resulta em numero fracionado, gerando erro, pois não é um numero inteiro.
 Para pegar apenas a parte inteira de uma divisão podemos usar o int(divisao).
ex: int(3/2) resulta em 1
      int(13/5) resulta em 2
 Agora para pegar apenas o resto de uma divisao usamos o %
ex: 5%2 resulta em 1, que eh o resto.
 Aqui tem alguns exercicios de divisao no Visualg

 1- Transforme um tempo de segundos para horas, minutos e segundos.

 2- Transforme a velocidade de  km/h para m/s

 3- Faça um algoritmo que leia dois números nas variáveis Val_A  e  Val_B, calcule sua média na variável Media e imprima seu valor.

 4- Faça um algoritmo que transforme anos, meses e dias em apenas dias. 

Thursday, March 19, 2015

Exercicios visualg

 Vou colocar os exercicios de Visualg que tive que fazer:
1) Escrever um algoritmo que calcule a area do quadrado. O usuario devera digitar o valor do lado
                                                (Area do quadrado = lado ^ 2 (lado elevado ao quadrado)
2)Um algoritmo que calcule a velocidade media de x( exibindo: "A velocidade media de x foi:___)
                                               (Velocidade media = distancia por tempo)
3)Escrever um algoritmo que exiba o resto da divisao entre dois numeros
4)Escrever um algoritmo que faça o calculo de soma, produto e quociente entre dois numeros
5)Um algoritmo que calcule a area de um trapezio(o usuario digita o valor da base maior,menor e a altura)
                                               ( (base maior+base menor)*altura/2)
6)Um algoritmo que calcule o valor de um cilindro (usuario fornece as medidas)
                                               (pi*raio^2*comprimento)   pi=3,14   


Wednesday, March 18, 2015

Algoritmo no VisuAlg

Usando apenas para treinamento, é possível usar o "portugol"(algoritmo em portugues) para criar algoritmos e testar via VisuAlg(link para download lá em baixo!)
 Nele, usa-se sintaxes em portugues.
 No caso de c+ usariamos if. No portugol, usa-se o "se"
 Aqui vai algumas sintaxes usadas no portugol para começar:

  escreva : escreve algo no programa (ex: escreva("bom dia!") )
  escreval : o mesmo que "escreva" mas no fim da linha, ele pula uma linha
  se : usado para condições ( ex: se(variavel==1){codigo})
  senao : usado para condiçoes, se os requerimentos do "se" nao for atingido, o senao entra em ação
  leia : usado para que o usuario possa incluir informacoes em um determinado momento. (ex: leia(variavel) )

 Para começar um algoritmo, devemos tambem declarar as variaveis que serão utilizadas.
 Para isso, usamos a seção "var"
 os tipos de variaveis sao:
    inteiro: define variáveis numéricas dotipo inteiro, ou seja, sem casas decimais.
    real: define variáveis numéricas do tipo real, ou seja, com casas decimais.
    caractere: define variáveis do tipo string,ou seja, cadeia de caracteres.
    logico: define variáveis do tipo booleano, ou seja, com valor VERDADEIRO ou FALSO.

 É sempre interessante preencher a parte inicial do algoritmo para se catalogar o uso do programa e escrever a autoria
                      algoritmo "nome"
                      // Função :
                      // Autor :
                      // Data : 18/03/2015
                      // Seção de Declarações 





O algoritmo em sí, deve estar entre o "inicio" e "fimalgoritmo"
Com o VisuAlg, você já pode ter noções de como programar. Faça bom uso!
 

  Link para download do VisuAlg: http://www.4shared.com/file/nXKPLo0xce/visualg.html

Monday, March 16, 2015

Olá mundo!

Ola!
Sou calouro de análise e desenvolvimento de sistemas e na duvida se faço anotações em caderno ou notebook, decidi fazer um blog, apresentando as experiências que tive no curso assim como os desafios.
Espero que o conteúdo postado possa ajudar a vocês de alguma forma. Qualquer duvida me comunique que tentarei responder de alguma forma!
Obrigado!