SlideShare una empresa de Scribd logo
1 de 20
COMPILANDO
OPENCV 3.0.0
André Moreira
Junho, 2014
QUEM SOU EU...
# André de Souza Moreira;
# Mestando na PUC-RIO;
# Pesquisador no Instituto Tecgraf em Computação Gráfica;
# Antes: Pesquisador no NCA em Processamento de Imagens Médicas.
andredsm.com
O que é OPENCV?
# É uma biblioteca open source escrita em C++ para visão computacional;
# Foi desenvolvida inicialmente pela Intel;
# Existem diversos wrapers para outras linguagens como Python e Java;
# Roda no Windows, Android, Linux, OS X e outros;
# Oferece suporte à CUDA e OpenCL.
# Sua última versão release é a 2.4.9, mas é possível utilizar a versão 3.0.0 que encontra-se
em desenvolvimento (Junho, 2014).
OBJETIVOS
# Compilar o OpenCV com o Visual Studio 2013.
# Executar um exemplo do OpenCV;
# Linkar o OpenCV com um novo projeto em branco no Visual Studio 2013.
ANTES DE
COMPILAR
Passo :
Baixar o código fonte
# Disponível em https://github.com/Itseez/opencv
# Opção 1: Download diretamente do website.
1
Passo :
Baixar o código fonte
# Option 2: Clone do repositório git:
# A vantagem desse método consiste na possibilidade de ter uma versão do código fonte
sempre atualizada com a versão mais recente do github. Dessa forma é possível compilar a
biblioteca sempre que houver uma nova feature ou algum bug for corrigido.
1
$ git clone git@github.com:Itseez/opencv.git
Passo :
Instalar Dependências
# Existem diversas dependências que podem ser utilizadas na compilação do OpenCV, tais
como: Qt, Python, Opengl, pdflatex para a geração da documentação, CUDA, OpenCL e
outros.
# Por exemplo, você pode instalar o python 2.7.x e o numpy para buildar o wrapper do
python e utilizar o OpenCV no python.
2
# Instale o Cmake
• Disponível em http://www.cmake.org/
# Abra o cmake-gui, indique o local onde o código do OpenCV encontra-se (1) e onde os
arquivos resultantes do build serão gerados(2). Finalmente, clique no botão Configure
(3).
Passo :
Preparando o projeto:
3
(1)
(2)
(3)
# Selecione o tipo de projeto que será gerado:
• No nosso caso, escolha o Visual Studio 2013. (Sim, o Visual Studio 2013 é a opção
Visual Studio 12!) :P
Passo :
Preparando o projeto:
3
# O cmake irá mostrar algumas opções de build, entre elas:
• BUILD: selecione os módulos e extensões que serão utilizados na compilação.
• WITH: pode-se habilitar o uso de outras tecnologias, tal como CUDA.
• INSTALL: quais arquivos irão ser movidos para o diretório de instalação.
• CMAKE/CMAKE_INSTAL_PREFIX:
Selecione o diretório padrão onde a
biblioteca será instalada.
# Após escolher as opções acima, clique no botão
Configure novamente. Se tudo estiver OK, todos
os campos que estavam vermelho irão aparecer
com o fundo branco.
# Por último, clique no botão Generate.
Passo :
Preparando o projeto:
3
Minha Configuração:
COMPILANDO O PROJETO
# Vá para a pasta de build e abra o arquivo de solução do Visual Studio (Opencv.sln).
# Selecione a versão da biblioteca a ser compilada (Debug ou Release, x86 ou x64) (1) e
depois compile o projeto ALL_BUILD (2). (Essa etapa irá compilar todos os projetos
exibidos no Solution Explorer).
# Se nenhum erro acontecer, compile o projeto INSTALL.
Passo :
Compilando o projeto
4
(1)
(2)
(3)
# Copie todas as .dll de {INSTALL_DIRECTORY} x64vc12bin para:
• C:WindowsSystem32 Se a biblioteca foi compilada em x64
• C:WindowsSysWOW64 Se a biblioteca foi compilada em x86
# Nesse ponto, você já pode rodar qualquer um dos exemplos do OpenCV e estes devem
funcionar sem apresentar erros.
# Copie todos os arquivos de {INSTALL_DIRECTORY} x64vc12lib para
{VISUALSTUDIO_DIRECTORY}VClib (x86) ou {VISUALSTUDIO_DIRECTORY}VClibamd64
(x64)
# Copie as duas pastas que estão em {INSTALL_DIRECTORY} include para
{VISUALSTUDIO_DIRECTORY}VCinclude
PASSO :
Instalando a biblioteca
5
RODANDO OS EXEMPLOS
# Você podem rodar os exemplos que estão em {INSTALL_DIRECTORY}
x64vc12samples* e assim verificar se tudo funciona normalmente.
• Exemplo: executando o exemplo cppcpp-example-delaunay2.exe:
Linkando com a biblioteca
# Crie um novo projeto no Visual Studio 2013. (Ctrl + Shift + N);
# Vá em DEBUG -> {projectName} Properties. (Alt + F7);
# Em Linker > Input > Additional Dependecies, liste o nome dos módulos que você precisa
no seu projeto:
• Exemplo:
Linkando com a biblioteca
# Crie um arquivo .cpp (CTRL+SHIFT+A) e execute-o (CTRL+F5):
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
#include <stdlib.h>
#include <stdio.h>
using namespace cv;
/** @function main */
int main(int argc, char** argv)
{
Mat src, src_gray, dst;
int kernel_size = 3;
int scale = 1;
int delta = 0;
int ddepth = CV_16S;
char* window_name = "Laplace Demo";
/// Load your image
src = imread("myImage.jpg");
if (!src.data)
{
return -1;
}
/// Remove noise by blurring with a Gaussian filter
GaussianBlur(src, src, Size(3, 3), 0, 0, BORDER_DEFAULT);
/// Convert the image to grayscale
cvtColor(src, src_gray, COLOR_RGB2GRAY);
/// Create window
namedWindow(window_name, WINDOW_AUTOSIZE);
/// Apply Laplace function
Mat abs_dst;
Laplacian(src_gray, dst, ddepth, kernel_size, scale, delta, BORDER_DEFAULT);
convertScaleAbs(dst, abs_dst);
/// Show what you got
imshow(window_name, abs_dst);
waitKey(0);
return 0;
}
O Resultado:
Ref: http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/laplace_operator/laplace_operator.html
Precisa de ajuda?
# Documentação Oficial:
• http://www.teste.com
# Comunidade do Stackoverflow:
• http://stackoverflow.com/questions/tagged/opencv
# Guia de instalação do OpenCV:
• http://docs.opencv.org/trunk/doc/tutorials/introduction/windows_install/windows_install.html
# Por fim, este ótimo livro: ;)
OpenCV Computer Vision Application Programming Cookbook (2nd Edition),
Robert Laganiere.
ISBN-13: 9781782161486
Publisher: Packt Publishing
Publication date: 8/1/2014
Pages: 390

Más contenido relacionado

La actualidad más candente

Estruturas de dados com C++ e STL
Estruturas de dados com C++ e STLEstruturas de dados com C++ e STL
Estruturas de dados com C++ e STLMarcos Castro
 
Pós Ruy - 2 e 3 Camadas - Teste de componentes
Pós Ruy - 2 e 3 Camadas - Teste de componentesPós Ruy - 2 e 3 Camadas - Teste de componentes
Pós Ruy - 2 e 3 Camadas - Teste de componentesCleverson Sacramento
 
Maratona de Programação com STL
Maratona de Programação com STLMaratona de Programação com STL
Maratona de Programação com STLMarcos Castro
 
MSDN Webcast - Melhores práticas cross browser
MSDN Webcast - Melhores práticas cross browserMSDN Webcast - Melhores práticas cross browser
MSDN Webcast - Melhores práticas cross browserJP Clementi
 
Programando Software Livre em C
Programando Software Livre em CProgramando Software Livre em C
Programando Software Livre em CDiego Santos
 
Controlando o fluxo de forma simples para construir pipelines complexas
Controlando o fluxo de forma simples para construir pipelines complexasControlando o fluxo de forma simples para construir pipelines complexas
Controlando o fluxo de forma simples para construir pipelines complexasJuan Funez
 
Testes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de códigoTestes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de códigoPaula Grangeiro
 
Testes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de códigoTestes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de códigoPaula Grangeiro
 

La actualidad más candente (20)

Devcpp
DevcppDevcpp
Devcpp
 
Mock Objects
Mock ObjectsMock Objects
Mock Objects
 
Frameworks para C 3º DeSif
Frameworks para C 3º DeSifFrameworks para C 3º DeSif
Frameworks para C 3º DeSif
 
Estruturas de dados com C++ e STL
Estruturas de dados com C++ e STLEstruturas de dados com C++ e STL
Estruturas de dados com C++ e STL
 
Pós Ruy - 2 e 3 Camadas - Teste de componentes
Pós Ruy - 2 e 3 Camadas - Teste de componentesPós Ruy - 2 e 3 Camadas - Teste de componentes
Pós Ruy - 2 e 3 Camadas - Teste de componentes
 
Maratona de Programação com STL
Maratona de Programação com STLMaratona de Programação com STL
Maratona de Programação com STL
 
MSDN Webcast - Melhores práticas cross browser
MSDN Webcast - Melhores práticas cross browserMSDN Webcast - Melhores práticas cross browser
MSDN Webcast - Melhores práticas cross browser
 
Programando Software Livre em C
Programando Software Livre em CProgramando Software Livre em C
Programando Software Livre em C
 
Testes em go
Testes em goTestes em go
Testes em go
 
Controlando o fluxo de forma simples para construir pipelines complexas
Controlando o fluxo de forma simples para construir pipelines complexasControlando o fluxo de forma simples para construir pipelines complexas
Controlando o fluxo de forma simples para construir pipelines complexas
 
Curso de Node JS Básico
Curso de Node JS BásicoCurso de Node JS Básico
Curso de Node JS Básico
 
Testes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de códigoTestes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de código
 
Calourada2010
Calourada2010Calourada2010
Calourada2010
 
Cpic
CpicCpic
Cpic
 
Guia Rápido TI-84
Guia Rápido TI-84Guia Rápido TI-84
Guia Rápido TI-84
 
PHP-CLI em 7 passos
PHP-CLI em 7 passosPHP-CLI em 7 passos
PHP-CLI em 7 passos
 
Guia Rápido TI-NSpire
Guia Rápido TI-NSpireGuia Rápido TI-NSpire
Guia Rápido TI-NSpire
 
Testes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de códigoTestes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de código
 
Guia Rápido Voyage 200
Guia Rápido Voyage 200Guia Rápido Voyage 200
Guia Rápido Voyage 200
 
Canal analogico do_pic
Canal analogico do_picCanal analogico do_pic
Canal analogico do_pic
 

Destacado

Sistema de Reconhecimento de Placas de Carro (Brasil) - Visão Computacional/O...
Sistema de Reconhecimento de Placas de Carro (Brasil) - Visão Computacional/O...Sistema de Reconhecimento de Placas de Carro (Brasil) - Visão Computacional/O...
Sistema de Reconhecimento de Placas de Carro (Brasil) - Visão Computacional/O...Richiely Paiva
 
Projeto de reconhecimento de placas (2)
Projeto de reconhecimento de placas (2)Projeto de reconhecimento de placas (2)
Projeto de reconhecimento de placas (2)Guilherme Stéfano
 
Processamento Digital de Imagens - Fundamentos e Aplicações
Processamento Digital de Imagens - Fundamentos e AplicaçõesProcessamento Digital de Imagens - Fundamentos e Aplicações
Processamento Digital de Imagens - Fundamentos e AplicaçõesAldisio Medeiros
 
Comunicação Serial Linux
Comunicação Serial LinuxComunicação Serial Linux
Comunicação Serial Linuxdrei123
 
Visão computacional em embarcados
Visão computacional em embarcadosVisão computacional em embarcados
Visão computacional em embarcadosMauro Assis
 
Apresentação visão computacional
Apresentação visão computacionalApresentação visão computacional
Apresentação visão computacionalEdvaldo Araújo
 
Introducción a los Algoritmos Genéticos
Introducción  a los Algoritmos GenéticosIntroducción  a los Algoritmos Genéticos
Introducción a los Algoritmos Genéticosdrk28
 
Crando Plugins en ImageJ [de http://www.imagingbook.com/fileadmin/goodies/ijt...
Crando Plugins en ImageJ [de http://www.imagingbook.com/fileadmin/goodies/ijt...Crando Plugins en ImageJ [de http://www.imagingbook.com/fileadmin/goodies/ijt...
Crando Plugins en ImageJ [de http://www.imagingbook.com/fileadmin/goodies/ijt...drk28
 
Técnicas de PDI com Java - Ercemapi 2009
Técnicas de PDI com Java - Ercemapi 2009Técnicas de PDI com Java - Ercemapi 2009
Técnicas de PDI com Java - Ercemapi 2009Ialis Cavalcante
 
Computação Gráfica em Python
Computação Gráfica em PythonComputação Gráfica em Python
Computação Gráfica em Pythongsroma
 
White Paper: Sistemas de Visão Artificial Industrial - Factores a Ter em Cons...
White Paper: Sistemas de Visão Artificial Industrial - Factores a Ter em Cons...White Paper: Sistemas de Visão Artificial Industrial - Factores a Ter em Cons...
White Paper: Sistemas de Visão Artificial Industrial - Factores a Ter em Cons...Maria Spínola
 
Introdução ao Processamento de Imagens Digitais
Introdução ao Processamento de Imagens DigitaisIntrodução ao Processamento de Imagens Digitais
Introdução ao Processamento de Imagens DigitaisMurilo Adriano Vasconcelos
 
Introduction to OpenCV (with Java)
Introduction to OpenCV (with Java)Introduction to OpenCV (with Java)
Introduction to OpenCV (with Java)Luigi De Russis
 
O que é Periódico Indexado e como identificar nas principais bases de dados?
O que é Periódico Indexado e como identificar nas principais bases de dados?O que é Periódico Indexado e como identificar nas principais bases de dados?
O que é Periódico Indexado e como identificar nas principais bases de dados?Universidade de São Paulo
 
Segurança de redes - Conceitos de firewall
Segurança de redes - Conceitos de firewall Segurança de redes - Conceitos de firewall
Segurança de redes - Conceitos de firewall Cleber Ramos
 

Destacado (16)

Sistema de Reconhecimento de Placas de Carro (Brasil) - Visão Computacional/O...
Sistema de Reconhecimento de Placas de Carro (Brasil) - Visão Computacional/O...Sistema de Reconhecimento de Placas de Carro (Brasil) - Visão Computacional/O...
Sistema de Reconhecimento de Placas de Carro (Brasil) - Visão Computacional/O...
 
Projeto de reconhecimento de placas (2)
Projeto de reconhecimento de placas (2)Projeto de reconhecimento de placas (2)
Projeto de reconhecimento de placas (2)
 
Processamento Digital de Imagens - Fundamentos e Aplicações
Processamento Digital de Imagens - Fundamentos e AplicaçõesProcessamento Digital de Imagens - Fundamentos e Aplicações
Processamento Digital de Imagens - Fundamentos e Aplicações
 
Comunicação Serial Linux
Comunicação Serial LinuxComunicação Serial Linux
Comunicação Serial Linux
 
Visão computacional em embarcados
Visão computacional em embarcadosVisão computacional em embarcados
Visão computacional em embarcados
 
Apresentação visão computacional
Apresentação visão computacionalApresentação visão computacional
Apresentação visão computacional
 
Introducción a los Algoritmos Genéticos
Introducción  a los Algoritmos GenéticosIntroducción  a los Algoritmos Genéticos
Introducción a los Algoritmos Genéticos
 
Crando Plugins en ImageJ [de http://www.imagingbook.com/fileadmin/goodies/ijt...
Crando Plugins en ImageJ [de http://www.imagingbook.com/fileadmin/goodies/ijt...Crando Plugins en ImageJ [de http://www.imagingbook.com/fileadmin/goodies/ijt...
Crando Plugins en ImageJ [de http://www.imagingbook.com/fileadmin/goodies/ijt...
 
Técnicas de PDI com Java - Ercemapi 2009
Técnicas de PDI com Java - Ercemapi 2009Técnicas de PDI com Java - Ercemapi 2009
Técnicas de PDI com Java - Ercemapi 2009
 
Computação Gráfica em Python
Computação Gráfica em PythonComputação Gráfica em Python
Computação Gráfica em Python
 
White Paper: Sistemas de Visão Artificial Industrial - Factores a Ter em Cons...
White Paper: Sistemas de Visão Artificial Industrial - Factores a Ter em Cons...White Paper: Sistemas de Visão Artificial Industrial - Factores a Ter em Cons...
White Paper: Sistemas de Visão Artificial Industrial - Factores a Ter em Cons...
 
Introdução ao Processamento de Imagens Digitais
Introdução ao Processamento de Imagens DigitaisIntrodução ao Processamento de Imagens Digitais
Introdução ao Processamento de Imagens Digitais
 
Introduction to OpenCV (with Java)
Introduction to OpenCV (with Java)Introduction to OpenCV (with Java)
Introduction to OpenCV (with Java)
 
O que é Periódico Indexado e como identificar nas principais bases de dados?
O que é Periódico Indexado e como identificar nas principais bases de dados?O que é Periódico Indexado e como identificar nas principais bases de dados?
O que é Periódico Indexado e como identificar nas principais bases de dados?
 
Segurança de redes - Conceitos de firewall
Segurança de redes - Conceitos de firewall Segurança de redes - Conceitos de firewall
Segurança de redes - Conceitos de firewall
 
PDI Slides
PDI SlidesPDI Slides
PDI Slides
 

Similar a Compilando e Usando OpenCV v. 3.0.0

Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...
Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...
Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...Eliel Simoncelo
 
Treinamento Android Embarcado
Treinamento Android EmbarcadoTreinamento Android Embarcado
Treinamento Android EmbarcadoOdair Sousa
 
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...Renato Groffe
 
Construindo pipelines com Azure DevOps
Construindo pipelines com Azure DevOpsConstruindo pipelines com Azure DevOps
Construindo pipelines com Azure DevOpsCamila Carrera
 
Introdução ao docker
Introdução ao dockerIntrodução ao docker
Introdução ao dockerBenicio Ávila
 
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...Renato Groff
 
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containersTDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containerstdc-globalcode
 
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020Renato Groff
 
Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...
Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...
Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...Renato Groff
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014Giovanni Bassi
 
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )Getúlio Strapazzon
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...Renato Groff
 
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu DevelopersDesenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu DevelopersDextra Sistemas / Etec Itu
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Renato Groff
 

Similar a Compilando e Usando OpenCV v. 3.0.0 (20)

Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...
Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...
Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...
 
Seminário: C#
Seminário: C#Seminário: C#
Seminário: C#
 
Docker
DockerDocker
Docker
 
Treinamento Android Embarcado
Treinamento Android EmbarcadoTreinamento Android Embarcado
Treinamento Android Embarcado
 
Iniciando com django
Iniciando com djangoIniciando com django
Iniciando com django
 
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...
 
Construindo pipelines com Azure DevOps
Construindo pipelines com Azure DevOpsConstruindo pipelines com Azure DevOps
Construindo pipelines com Azure DevOps
 
Docker
DockerDocker
Docker
 
Introdução ao docker
Introdução ao dockerIntrodução ao docker
Introdução ao docker
 
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...
 
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containersTDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
 
Linguagem c
Linguagem cLinguagem c
Linguagem c
 
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020
 
Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...
Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...
Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...
 
ExtJS Jumpstart Parte 2
ExtJS Jumpstart Parte 2ExtJS Jumpstart Parte 2
ExtJS Jumpstart Parte 2
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014
 
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
 
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu DevelopersDesenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
 

Compilando e Usando OpenCV v. 3.0.0

  • 2. QUEM SOU EU... # André de Souza Moreira; # Mestando na PUC-RIO; # Pesquisador no Instituto Tecgraf em Computação Gráfica; # Antes: Pesquisador no NCA em Processamento de Imagens Médicas. andredsm.com
  • 3. O que é OPENCV? # É uma biblioteca open source escrita em C++ para visão computacional; # Foi desenvolvida inicialmente pela Intel; # Existem diversos wrapers para outras linguagens como Python e Java; # Roda no Windows, Android, Linux, OS X e outros; # Oferece suporte à CUDA e OpenCL. # Sua última versão release é a 2.4.9, mas é possível utilizar a versão 3.0.0 que encontra-se em desenvolvimento (Junho, 2014).
  • 4. OBJETIVOS # Compilar o OpenCV com o Visual Studio 2013. # Executar um exemplo do OpenCV; # Linkar o OpenCV com um novo projeto em branco no Visual Studio 2013.
  • 6. Passo : Baixar o código fonte # Disponível em https://github.com/Itseez/opencv # Opção 1: Download diretamente do website. 1
  • 7. Passo : Baixar o código fonte # Option 2: Clone do repositório git: # A vantagem desse método consiste na possibilidade de ter uma versão do código fonte sempre atualizada com a versão mais recente do github. Dessa forma é possível compilar a biblioteca sempre que houver uma nova feature ou algum bug for corrigido. 1 $ git clone git@github.com:Itseez/opencv.git
  • 8. Passo : Instalar Dependências # Existem diversas dependências que podem ser utilizadas na compilação do OpenCV, tais como: Qt, Python, Opengl, pdflatex para a geração da documentação, CUDA, OpenCL e outros. # Por exemplo, você pode instalar o python 2.7.x e o numpy para buildar o wrapper do python e utilizar o OpenCV no python. 2
  • 9. # Instale o Cmake • Disponível em http://www.cmake.org/ # Abra o cmake-gui, indique o local onde o código do OpenCV encontra-se (1) e onde os arquivos resultantes do build serão gerados(2). Finalmente, clique no botão Configure (3). Passo : Preparando o projeto: 3 (1) (2) (3)
  • 10. # Selecione o tipo de projeto que será gerado: • No nosso caso, escolha o Visual Studio 2013. (Sim, o Visual Studio 2013 é a opção Visual Studio 12!) :P Passo : Preparando o projeto: 3
  • 11. # O cmake irá mostrar algumas opções de build, entre elas: • BUILD: selecione os módulos e extensões que serão utilizados na compilação. • WITH: pode-se habilitar o uso de outras tecnologias, tal como CUDA. • INSTALL: quais arquivos irão ser movidos para o diretório de instalação. • CMAKE/CMAKE_INSTAL_PREFIX: Selecione o diretório padrão onde a biblioteca será instalada. # Após escolher as opções acima, clique no botão Configure novamente. Se tudo estiver OK, todos os campos que estavam vermelho irão aparecer com o fundo branco. # Por último, clique no botão Generate. Passo : Preparando o projeto: 3
  • 14. # Vá para a pasta de build e abra o arquivo de solução do Visual Studio (Opencv.sln). # Selecione a versão da biblioteca a ser compilada (Debug ou Release, x86 ou x64) (1) e depois compile o projeto ALL_BUILD (2). (Essa etapa irá compilar todos os projetos exibidos no Solution Explorer). # Se nenhum erro acontecer, compile o projeto INSTALL. Passo : Compilando o projeto 4 (1) (2) (3)
  • 15. # Copie todas as .dll de {INSTALL_DIRECTORY} x64vc12bin para: • C:WindowsSystem32 Se a biblioteca foi compilada em x64 • C:WindowsSysWOW64 Se a biblioteca foi compilada em x86 # Nesse ponto, você já pode rodar qualquer um dos exemplos do OpenCV e estes devem funcionar sem apresentar erros. # Copie todos os arquivos de {INSTALL_DIRECTORY} x64vc12lib para {VISUALSTUDIO_DIRECTORY}VClib (x86) ou {VISUALSTUDIO_DIRECTORY}VClibamd64 (x64) # Copie as duas pastas que estão em {INSTALL_DIRECTORY} include para {VISUALSTUDIO_DIRECTORY}VCinclude PASSO : Instalando a biblioteca 5
  • 16. RODANDO OS EXEMPLOS # Você podem rodar os exemplos que estão em {INSTALL_DIRECTORY} x64vc12samples* e assim verificar se tudo funciona normalmente. • Exemplo: executando o exemplo cppcpp-example-delaunay2.exe:
  • 17. Linkando com a biblioteca # Crie um novo projeto no Visual Studio 2013. (Ctrl + Shift + N); # Vá em DEBUG -> {projectName} Properties. (Alt + F7); # Em Linker > Input > Additional Dependecies, liste o nome dos módulos que você precisa no seu projeto: • Exemplo:
  • 18. Linkando com a biblioteca # Crie um arquivo .cpp (CTRL+SHIFT+A) e execute-o (CTRL+F5): #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/opencv.hpp> #include <stdlib.h> #include <stdio.h> using namespace cv; /** @function main */ int main(int argc, char** argv) { Mat src, src_gray, dst; int kernel_size = 3; int scale = 1; int delta = 0; int ddepth = CV_16S; char* window_name = "Laplace Demo"; /// Load your image src = imread("myImage.jpg"); if (!src.data) { return -1; } /// Remove noise by blurring with a Gaussian filter GaussianBlur(src, src, Size(3, 3), 0, 0, BORDER_DEFAULT); /// Convert the image to grayscale cvtColor(src, src_gray, COLOR_RGB2GRAY); /// Create window namedWindow(window_name, WINDOW_AUTOSIZE); /// Apply Laplace function Mat abs_dst; Laplacian(src_gray, dst, ddepth, kernel_size, scale, delta, BORDER_DEFAULT); convertScaleAbs(dst, abs_dst); /// Show what you got imshow(window_name, abs_dst); waitKey(0); return 0; }
  • 20. Precisa de ajuda? # Documentação Oficial: • http://www.teste.com # Comunidade do Stackoverflow: • http://stackoverflow.com/questions/tagged/opencv # Guia de instalação do OpenCV: • http://docs.opencv.org/trunk/doc/tutorials/introduction/windows_install/windows_install.html # Por fim, este ótimo livro: ;) OpenCV Computer Vision Application Programming Cookbook (2nd Edition), Robert Laganiere. ISBN-13: 9781782161486 Publisher: Packt Publishing Publication date: 8/1/2014 Pages: 390