SlideShare uma empresa Scribd logo
Uma Rápida
Introdução ao OpenCV
Cristiano Rafael Steffens
cristianosteffens@furg.br
Universidade Federal do Rio Grande – FURG
Centro de Ciências Computacionais
Agenda
 O que é a OpenCV?
 Como instalar?
 Hello World?
 O que podemos fazer com OpenCV?
O que é OpenCV?
 OpenCV (Open Source Computer Vision) é uma biblioteca
de programação com funções de visão computacional de
tempo real.
 Distribuída sob a licença BSD.
 Possui interfaces para C/C++, Python.
 Possui suporte para Windows, Linux Androide Mac OS.
Como instalar a OpenCV?
 Instalação Manual (Linux):
 http://docs.opencv.org/doc/tutorials/introduction/linux_install/linu
x_install.html
 Verificar versão instalada utilizando o comando:
#pkg-config --modversion opencv
 Confirmar a existência da pasta que contém os headers:
/usr/local/include/opencv
 Primeiro projeto utilizando CMake:
http://docs.opencv.org/doc/tutorials/introduction/linux_gcc_cma
ke/linux_gcc_cmake.html
Como instalar a OpenCV?
 Máquina virtual do ROS (Já vem com a OpenCv):
 Download em:
http://nootrix.com/2014/09/ros-indigo-virtual-machine/
 Se estiver utilizando Virtual Box precisa instalar o Extension Pack
para habilitar USB 2.0 *
 Para habilitar o uso da webcam do computador é necessário a
instalação do Cheese, GUVCView e os drivers da câmera.
 Mais informações podem ser encontradas em:
https://siddhantahuja.wordpress.com/2011/07/20/working-with-
ros-and-opencv-draft/
Como instalar a OpenCV?
 No Windows:
 Download do arquivo em http://opencv.org/downloads.html
 Configuração do caminho dos binários no path
 Procedimento detalhado:
http://docs.opencv.org/doc/tutorials/introduction/windows_insta
ll/windows_install.html
http://docs.opencv.org/doc/tutorials/introduction/windows_visua
l_studio_Opencv/windows_visual_studio_Opencv.html
Aplicações da OpenCV
 A biblioteca OpenCV é dividida em módulos
 core - define as principais estruturas de dados utlizadas pela
biblioteca. Ex.: Mat e Point.
 improc - Módulo de processamento de imagem que inclui filtros
lineares e não lineares além de transformações geométricas.
 highgui - Módulo com funções de interface como criação de janelas.
 objdetect - Módulo com funções de detecção de objetos. Ex: haar,
cascade classifiers.
 ml – Módulo com funções de Machine Learning. Ex: classificadores
de árvore, knn, redes neurais, svm e classificadores bayesianos.
 A lista complete pode ser obtida em
http://docs.opencv.org/modules/refman.html
Importante!! cv::Mat
Importante!! cv::Mat
// Operador de atribuição
A = B;
// Mostrar no console
cout << A;
// Clonar uma matriz
cv::Mat F = A.clone();
// Utilizar parte de uma matriz definindo uma região de interesse
cv::Mat D (A, cv::Rect(10, 10, 100, 100));
// Criando uma Mat
cv::Mat M(2,2, CV_8UC3);
cv::Mat O = cv::Mat::ones(3, 3, CV_32F);
cv::Mat Z = cv::Mat::zeros(3,3, CV_8UC1);
// Alterar uma posição (branco)
A.at<uchar>(x,y) = 255;
Olá turma!! 
// includes da opencv
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
int main() {
// lê a imagem para uma matriz
cv::Mat image = cv::imread("img.jpg");
// cria uma janela para mostrar a imagem
cv::namedWindow("Tutorial OpenCV - FURG");
// mostra a imagem
cv::imshow( "Tutorial OpenCV - FURG", image);
// aguarda 5000 ms
cv::waitKey(5000);
return 1;
}
Olá mundo!! 
// includes da opencv
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
int main() {
// lê a imagem para uma matriz
cv::Mat image = cv::imread("img.jpg");
//cria uma matriz para guarder a imagem em escala de cinza
cv::Mat gray_image;
// converte a cor
cv::cvtColor( image, gray_image, CV_BGR2GRAY);
// cria uma janela para mostrar a imagem
cv::namedWindow(“Tutorial OpenCV - FURG");
// mostra a imagem
cv::imshow( " Tutorial OpenCV - FURG ", gray_image);
// aguarda 5000 ms
cv::waitKey(5000);
return 1;
}
Realçando uma imagem
// lê a imagem para uma matriz
cv::Mat image = cv::imread("E:/trash/img.jpg");
if( ! image.empty() ){
// cria as matrizes
cv::Mat smooth, sharp, difference;
// cria a versão suavisada através da gaussiana
cv::GaussianBlur(image, smooth, cv::Size(9,9), .7);
// adiciona ao original (unsharp filter)
cv::addWeighted(image, 1.5, smooth, -0.5, 1, sharp);
// calcula a diferença entre as imagens
cv::absdiff(image, sharp, difference);
// mostra a imagem
cv::imshow("Tutorial OpenCV - FURG (original)", image);
cv::imshow("Tutorial OpenCV - FURG (realçada)", sharp);
cv::imshow("Tutorial OpenCV - FURG (diferença)", difference);
// salva as imagens em arquivo
cv::imwrite("sharp.png", sharp);
}
Encontrando bordas
/// Converte a imagem para escala de cinza
cv::cvtColor( src, src_gray, CV_BGR2GRAY );
/// Remove o ruído da imagem utilizando um filtro de kernel 3x3
cv::blur( src_gray, detected_edges, Size(3,3) );
/// Detector de bordas de Canny
/// origem, saída, threshold baixo, threshold alto, kernel size );
cv::Canny( detected_edges, detected_edges, 100, 200, 3 );
/// mostra a saída
cv::imshow("bordas", detected_edges);
 Exemplo utilizando trackbar para controlar o threshold:
http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/canny_dete
ctor/canny_detector.html
Pretty cool! Huh!

Mais conteúdo relacionado

Mais procurados

Introdução ao Node.js
Introdução ao Node.jsIntrodução ao Node.js
Introdução ao Node.js
Edgar Eler
 
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...
Rogério Moraes de Carvalho
 
Curso de Node JS Básico
Curso de Node JS BásicoCurso de Node JS Básico
Curso de Node JS Básico
Victor Hazin da Rocha
 
TDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux EmbarcadoTDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux Embarcado
tdc-globalcode
 
Testes com javascript
Testes com javascriptTestes com javascript
Testes com javascript
Laís Lima
 
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
JP Clementi
 
Tutorial JavaFX simples
Tutorial JavaFX simplesTutorial JavaFX simples
Tutorial JavaFX simples
Clodoaldo Brasilino
 
Introdução à OpenGL
Introdução à OpenGLIntrodução à OpenGL
Introdução à OpenGL
Herbet Ferreira Rodrigues
 
Arduino e python
Arduino e pythonArduino e python
Arduino e python
Victor Casé
 
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
Cleverson Sacramento
 
Node.js para desenvolvedores .NET
Node.js para desenvolvedores .NETNode.js para desenvolvedores .NET
Node.js para desenvolvedores .NET
MVP Microsoft
 

Mais procurados (11)

Introdução ao Node.js
Introdução ao Node.jsIntrodução ao Node.js
Introdução ao Node.js
 
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...
 
Curso de Node JS Básico
Curso de Node JS BásicoCurso de Node JS Básico
Curso de Node JS Básico
 
TDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux EmbarcadoTDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux Embarcado
 
Testes com javascript
Testes com javascriptTestes com javascript
Testes com javascript
 
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
 
Tutorial JavaFX simples
Tutorial JavaFX simplesTutorial JavaFX simples
Tutorial JavaFX simples
 
Introdução à OpenGL
Introdução à OpenGLIntrodução à OpenGL
Introdução à OpenGL
 
Arduino e python
Arduino e pythonArduino e python
Arduino e python
 
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
 
Node.js para desenvolvedores .NET
Node.js para desenvolvedores .NETNode.js para desenvolvedores .NET
Node.js para desenvolvedores .NET
 

Destaque

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
 
Comunicação Serial Linux
Comunicação Serial LinuxComunicação Serial Linux
Comunicação Serial Linux
drei123
 
Introdução à visão computacional utilizando software livre
Introdução à visão computacional utilizando software livreIntrodução à visão computacional utilizando software livre
Introdução à visão computacional utilizando software livre
pichiliani
 
Corrigindo o vestibular com Python e OpenCV
Corrigindo o vestibular com Python e OpenCVCorrigindo o vestibular com Python e OpenCV
Corrigindo o vestibular com Python e OpenCV
Romualdo Andre
 
Visão computacional em embarcados
Visão computacional em embarcadosVisão computacional em embarcados
Visão computacional em embarcados
Mauro Assis
 
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
Ialis Cavalcante
 
Apresentação visão computacional
Apresentação visão computacionalApresentação visão computacional
Apresentação visão computacional
Edvaldo Araújo
 
Artigo tecpar ráfagan - Pesquisando a viabilidade de utilização de engin...
Artigo tecpar   ráfagan - Pesquisando a viabilidade de utilização de engin...Artigo tecpar   ráfagan - Pesquisando a viabilidade de utilização de engin...
Artigo tecpar ráfagan - Pesquisando a viabilidade de utilização de engin...
Ráfagan Abreu
 
Optimization of computer vision algorithms in codesign methodologies
Optimization of computer vision algorithms in codesign methodologiesOptimization of computer vision algorithms in codesign methodologies
Optimization of computer vision algorithms in codesign methodologies
Marcos Nieto
 
Aula 5 Processamento de imagens
Aula 5 Processamento de imagensAula 5 Processamento de imagens
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
 
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
Aldisio Medeiros
 
Sensoriamento remoto aplicado à estudos florestais igor narvaes_iii_saef
Sensoriamento remoto aplicado à estudos florestais igor narvaes_iii_saefSensoriamento remoto aplicado à estudos florestais igor narvaes_iii_saef
Sensoriamento remoto aplicado à estudos florestais igor narvaes_iii_saef
igornarvaes
 
Unama br edinaldo_la-roque_oficina_kinect_20160917_2030
Unama br edinaldo_la-roque_oficina_kinect_20160917_2030Unama br edinaldo_la-roque_oficina_kinect_20160917_2030
Unama br edinaldo_la-roque_oficina_kinect_20160917_2030
la-roque
 
Reconhecimento automático de emoções
Reconhecimento automático de emoçõesReconhecimento automático de emoções
Reconhecimento automático de emoções
Adilmar Dantas
 
Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect
Adaptando e desenvolvendo jogos para uso com o Microsoft KinectAdaptando e desenvolvendo jogos para uso com o Microsoft Kinect
Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect
Bruno Campagnolo
 
Computação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGLComputação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGL
Tony Alexander Hild
 
2014 - Multimídia e Internet - 04 Imagem Digital - Bitmaps
2014 - Multimídia e Internet - 04 Imagem Digital - Bitmaps2014 - Multimídia e Internet - 04 Imagem Digital - Bitmaps
2014 - Multimídia e Internet - 04 Imagem Digital - Bitmaps
Willian Magalhães
 
Computação Gráfica - Transformações Geométricas no Plano e no Espaço
Computação Gráfica - Transformações Geométricas no Plano e no EspaçoComputação Gráfica - Transformações Geométricas no Plano e no Espaço
Computação Gráfica - Transformações Geométricas no Plano e no Espaço
Tony Alexander Hild
 

Destaque (20)

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)
 
Comunicação Serial Linux
Comunicação Serial LinuxComunicação Serial Linux
Comunicação Serial Linux
 
Introdução à visão computacional utilizando software livre
Introdução à visão computacional utilizando software livreIntrodução à visão computacional utilizando software livre
Introdução à visão computacional utilizando software livre
 
Corrigindo o vestibular com Python e OpenCV
Corrigindo o vestibular com Python e OpenCVCorrigindo o vestibular com Python e OpenCV
Corrigindo o vestibular com Python e OpenCV
 
Visão computacional em embarcados
Visão computacional em embarcadosVisão computacional em embarcados
Visão computacional em embarcados
 
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
 
Apresentação visão computacional
Apresentação visão computacionalApresentação visão computacional
Apresentação visão computacional
 
Artigo tecpar ráfagan - Pesquisando a viabilidade de utilização de engin...
Artigo tecpar   ráfagan - Pesquisando a viabilidade de utilização de engin...Artigo tecpar   ráfagan - Pesquisando a viabilidade de utilização de engin...
Artigo tecpar ráfagan - Pesquisando a viabilidade de utilização de engin...
 
Optimization of computer vision algorithms in codesign methodologies
Optimization of computer vision algorithms in codesign methodologiesOptimization of computer vision algorithms in codesign methodologies
Optimization of computer vision algorithms in codesign methodologies
 
Aula 5 Processamento de imagens
Aula 5 Processamento de imagensAula 5 Processamento de imagens
Aula 5 Processamento de imagens
 
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...
 
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
 
Sensoriamento remoto aplicado à estudos florestais igor narvaes_iii_saef
Sensoriamento remoto aplicado à estudos florestais igor narvaes_iii_saefSensoriamento remoto aplicado à estudos florestais igor narvaes_iii_saef
Sensoriamento remoto aplicado à estudos florestais igor narvaes_iii_saef
 
Unama br edinaldo_la-roque_oficina_kinect_20160917_2030
Unama br edinaldo_la-roque_oficina_kinect_20160917_2030Unama br edinaldo_la-roque_oficina_kinect_20160917_2030
Unama br edinaldo_la-roque_oficina_kinect_20160917_2030
 
Reconhecimento automático de emoções
Reconhecimento automático de emoçõesReconhecimento automático de emoções
Reconhecimento automático de emoções
 
Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect
Adaptando e desenvolvendo jogos para uso com o Microsoft KinectAdaptando e desenvolvendo jogos para uso com o Microsoft Kinect
Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect
 
Computação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGLComputação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGL
 
2014 - Multimídia e Internet - 04 Imagem Digital - Bitmaps
2014 - Multimídia e Internet - 04 Imagem Digital - Bitmaps2014 - Multimídia e Internet - 04 Imagem Digital - Bitmaps
2014 - Multimídia e Internet - 04 Imagem Digital - Bitmaps
 
Computação Gráfica - Transformações Geométricas no Plano e no Espaço
Computação Gráfica - Transformações Geométricas no Plano e no EspaçoComputação Gráfica - Transformações Geométricas no Plano e no Espaço
Computação Gráfica - Transformações Geométricas no Plano e no Espaço
 

Semelhante a Introdução OpenCV (Pt-Br) com exemplos

C sharp lesson1
C sharp lesson1C sharp lesson1
C sharp lesson1
Simone Ferreira
 
TypeScript - Campus party 2013
TypeScript - Campus party 2013TypeScript - Campus party 2013
TypeScript - Campus party 2013
Giovanni Bassi
 
Integração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlIntegração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControl
Diego Tremper
 
Linguagem c
Linguagem cLinguagem c
Linguagem c
saido_embalo1980
 
CakePHP
CakePHPCakePHP
CakePHP
elliando dias
 
ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010
Norton Guimarães
 
JasperReports Tecnicas de geracao_de_relatorios1
JasperReports  Tecnicas de geracao_de_relatorios1JasperReports  Tecnicas de geracao_de_relatorios1
JasperReports Tecnicas de geracao_de_relatorios1
Sliedesharessbarbosa
 
Integracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlIntegracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControl
Diego Tremper
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControl
Manuel Lemos
 
Cake Php
Cake PhpCake Php
Cake Php
Laura Lopes
 
Machine Learning: Do Notebook ao modelo em produção
Machine Learning: Do Notebook ao modelo em produçãoMachine Learning: Do Notebook ao modelo em produção
Machine Learning: Do Notebook ao modelo em produção
Marlesson Santana
 
Java Seminar
Java SeminarJava Seminar
Java Seminar
armeniocardoso
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControl
Diego Tremper
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.
Vinícius de Paula
 
Crud
CrudCrud
Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010
Alexandre Tarifa
 
C# básica
C#   básicaC#   básica
Gerência de redes utilizando o cacti
Gerência de redes utilizando o cactiGerência de redes utilizando o cacti
Gerência de redes utilizando o cacti
IsraelCunha
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao java
Armando Daniel
 
Mock Objects
Mock ObjectsMock Objects
Mock Objects
elliando dias
 

Semelhante a Introdução OpenCV (Pt-Br) com exemplos (20)

C sharp lesson1
C sharp lesson1C sharp lesson1
C sharp lesson1
 
TypeScript - Campus party 2013
TypeScript - Campus party 2013TypeScript - Campus party 2013
TypeScript - Campus party 2013
 
Integração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlIntegração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControl
 
Linguagem c
Linguagem cLinguagem c
Linguagem c
 
CakePHP
CakePHPCakePHP
CakePHP
 
ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010
 
JasperReports Tecnicas de geracao_de_relatorios1
JasperReports  Tecnicas de geracao_de_relatorios1JasperReports  Tecnicas de geracao_de_relatorios1
JasperReports Tecnicas de geracao_de_relatorios1
 
Integracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlIntegracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControl
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControl
 
Cake Php
Cake PhpCake Php
Cake Php
 
Machine Learning: Do Notebook ao modelo em produção
Machine Learning: Do Notebook ao modelo em produçãoMachine Learning: Do Notebook ao modelo em produção
Machine Learning: Do Notebook ao modelo em produção
 
Java Seminar
Java SeminarJava Seminar
Java Seminar
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControl
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.
 
Crud
CrudCrud
Crud
 
Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010
 
C# básica
C#   básicaC#   básica
C# básica
 
Gerência de redes utilizando o cacti
Gerência de redes utilizando o cactiGerência de redes utilizando o cacti
Gerência de redes utilizando o cacti
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao java
 
Mock Objects
Mock ObjectsMock Objects
Mock Objects
 

Mais de Cristiano Rafael Steffens

CONVOLUTIONAL NEURAL NETWORKS: The workhorse of image and video
CONVOLUTIONAL NEURAL NETWORKS: The workhorse of image and videoCONVOLUTIONAL NEURAL NETWORKS: The workhorse of image and video
CONVOLUTIONAL NEURAL NETWORKS: The workhorse of image and video
Cristiano Rafael Steffens
 
A pipelined approach to deal with image distortion in computer vision - BRACI...
A pipelined approach to deal with image distortion in computer vision - BRACI...A pipelined approach to deal with image distortion in computer vision - BRACI...
A pipelined approach to deal with image distortion in computer vision - BRACI...
Cristiano Rafael Steffens
 
A CNN BASED MODEL TO RESTORE ILL EXPOSED IMAGES
A CNN BASED MODEL TO RESTORE ILL EXPOSED IMAGESA CNN BASED MODEL TO RESTORE ILL EXPOSED IMAGES
A CNN BASED MODEL TO RESTORE ILL EXPOSED IMAGES
Cristiano Rafael Steffens
 
Can Exposure, Noise and Compression affect Image Recognition? An Assessment o...
Can Exposure, Noise and Compression affect Image Recognition? An Assessment o...Can Exposure, Noise and Compression affect Image Recognition? An Assessment o...
Can Exposure, Noise and Compression affect Image Recognition? An Assessment o...
Cristiano Rafael Steffens
 
MODELAGEM DAS DINÂMICAS DA FORMAÇÃO DA GOTA E TRANSFERÊNCIA DE MASSA EM PROCE...
MODELAGEM DAS DINÂMICAS DA FORMAÇÃO DA GOTA E TRANSFERÊNCIA DE MASSA EM PROCE...MODELAGEM DAS DINÂMICAS DA FORMAÇÃO DA GOTA E TRANSFERÊNCIA DE MASSA EM PROCE...
MODELAGEM DAS DINÂMICAS DA FORMAÇÃO DA GOTA E TRANSFERÊNCIA DE MASSA EM PROCE...
Cristiano Rafael Steffens
 
UMA ABORDAGEM COMPARATIVA ENTRE MICROCONTROLADORES: ARDUINO MEGA X ARDUINO DU...
UMA ABORDAGEM COMPARATIVA ENTRE MICROCONTROLADORES: ARDUINO MEGA X ARDUINO DU...UMA ABORDAGEM COMPARATIVA ENTRE MICROCONTROLADORES: ARDUINO MEGA X ARDUINO DU...
UMA ABORDAGEM COMPARATIVA ENTRE MICROCONTROLADORES: ARDUINO MEGA X ARDUINO DU...
Cristiano Rafael Steffens
 
FPGA-based sensor integration and communication protocols for automated
FPGA-based sensor integration and communication protocols for automatedFPGA-based sensor integration and communication protocols for automated
FPGA-based sensor integration and communication protocols for automated
Cristiano Rafael Steffens
 
Lars 2016 A Texture Driven Approach for Visible Spectrum Fire Detection
Lars 2016 A Texture Driven Approach for Visible Spectrum Fire DetectionLars 2016 A Texture Driven Approach for Visible Spectrum Fire Detection
Lars 2016 A Texture Driven Approach for Visible Spectrum Fire Detection
Cristiano Rafael Steffens
 
Php Math and arrays
Php Math and arraysPhp Math and arrays
Php Math and arrays
Cristiano Rafael Steffens
 
ICRA 2016 - Interactive section Presentation
ICRA 2016 - Interactive section PresentationICRA 2016 - Interactive section Presentation
ICRA 2016 - Interactive section Presentation
Cristiano Rafael Steffens
 
Vision-Based System for Welding Groove Measurements for Robotic Welding Appli...
Vision-Based System for Welding Groove Measurements for Robotic Welding Appli...Vision-Based System for Welding Groove Measurements for Robotic Welding Appli...
Vision-Based System for Welding Groove Measurements for Robotic Welding Appli...
Cristiano Rafael Steffens
 
Welding Groove Mapping: Image Acquisition and Processing on Shiny Surfaces - ...
Welding Groove Mapping: Image Acquisition and Processing on Shiny Surfaces - ...Welding Groove Mapping: Image Acquisition and Processing on Shiny Surfaces - ...
Welding Groove Mapping: Image Acquisition and Processing on Shiny Surfaces - ...
Cristiano Rafael Steffens
 
Automated control module based on VBM for shipyard welding applications: Stud...
Automated control module based on VBM for shipyard welding applications: Stud...Automated control module based on VBM for shipyard welding applications: Stud...
Automated control module based on VBM for shipyard welding applications: Stud...
Cristiano Rafael Steffens
 
An Unconstrained Dataset for Non-stationary Video Based Fire Detection
An Unconstrained Dataset for Non-stationary Video Based Fire DetectionAn Unconstrained Dataset for Non-stationary Video Based Fire Detection
An Unconstrained Dataset for Non-stationary Video Based Fire Detection
Cristiano Rafael Steffens
 
Um Sistema De Detecção De Fogo Baseado Em Vídeo
Um Sistema De Detecção De Fogo Baseado Em VídeoUm Sistema De Detecção De Fogo Baseado Em Vídeo
Um Sistema De Detecção De Fogo Baseado Em Vídeo
Cristiano Rafael Steffens
 
Um sistema de detecção de chamas utilizando RF e SVM (Short Version)
Um sistema de detecção de chamas utilizando RF e SVM (Short Version)Um sistema de detecção de chamas utilizando RF e SVM (Short Version)
Um sistema de detecção de chamas utilizando RF e SVM (Short Version)
Cristiano Rafael Steffens
 
G xserver curso-actualizgxxev1
G xserver curso-actualizgxxev1G xserver curso-actualizgxxev1
G xserver curso-actualizgxxev1
Cristiano Rafael Steffens
 
20 pratico cursogxxbr
20 pratico cursogxxbr20 pratico cursogxxbr
20 pratico cursogxxbr
Cristiano Rafael Steffens
 
18 indice cursogxx
18 indice cursogxx18 indice cursogxx
18 indice cursogxx
Cristiano Rafael Steffens
 
17 kb versoes-curso-gxxbr
17 kb versoes-curso-gxxbr17 kb versoes-curso-gxxbr
17 kb versoes-curso-gxxbr
Cristiano Rafael Steffens
 

Mais de Cristiano Rafael Steffens (20)

CONVOLUTIONAL NEURAL NETWORKS: The workhorse of image and video
CONVOLUTIONAL NEURAL NETWORKS: The workhorse of image and videoCONVOLUTIONAL NEURAL NETWORKS: The workhorse of image and video
CONVOLUTIONAL NEURAL NETWORKS: The workhorse of image and video
 
A pipelined approach to deal with image distortion in computer vision - BRACI...
A pipelined approach to deal with image distortion in computer vision - BRACI...A pipelined approach to deal with image distortion in computer vision - BRACI...
A pipelined approach to deal with image distortion in computer vision - BRACI...
 
A CNN BASED MODEL TO RESTORE ILL EXPOSED IMAGES
A CNN BASED MODEL TO RESTORE ILL EXPOSED IMAGESA CNN BASED MODEL TO RESTORE ILL EXPOSED IMAGES
A CNN BASED MODEL TO RESTORE ILL EXPOSED IMAGES
 
Can Exposure, Noise and Compression affect Image Recognition? An Assessment o...
Can Exposure, Noise and Compression affect Image Recognition? An Assessment o...Can Exposure, Noise and Compression affect Image Recognition? An Assessment o...
Can Exposure, Noise and Compression affect Image Recognition? An Assessment o...
 
MODELAGEM DAS DINÂMICAS DA FORMAÇÃO DA GOTA E TRANSFERÊNCIA DE MASSA EM PROCE...
MODELAGEM DAS DINÂMICAS DA FORMAÇÃO DA GOTA E TRANSFERÊNCIA DE MASSA EM PROCE...MODELAGEM DAS DINÂMICAS DA FORMAÇÃO DA GOTA E TRANSFERÊNCIA DE MASSA EM PROCE...
MODELAGEM DAS DINÂMICAS DA FORMAÇÃO DA GOTA E TRANSFERÊNCIA DE MASSA EM PROCE...
 
UMA ABORDAGEM COMPARATIVA ENTRE MICROCONTROLADORES: ARDUINO MEGA X ARDUINO DU...
UMA ABORDAGEM COMPARATIVA ENTRE MICROCONTROLADORES: ARDUINO MEGA X ARDUINO DU...UMA ABORDAGEM COMPARATIVA ENTRE MICROCONTROLADORES: ARDUINO MEGA X ARDUINO DU...
UMA ABORDAGEM COMPARATIVA ENTRE MICROCONTROLADORES: ARDUINO MEGA X ARDUINO DU...
 
FPGA-based sensor integration and communication protocols for automated
FPGA-based sensor integration and communication protocols for automatedFPGA-based sensor integration and communication protocols for automated
FPGA-based sensor integration and communication protocols for automated
 
Lars 2016 A Texture Driven Approach for Visible Spectrum Fire Detection
Lars 2016 A Texture Driven Approach for Visible Spectrum Fire DetectionLars 2016 A Texture Driven Approach for Visible Spectrum Fire Detection
Lars 2016 A Texture Driven Approach for Visible Spectrum Fire Detection
 
Php Math and arrays
Php Math and arraysPhp Math and arrays
Php Math and arrays
 
ICRA 2016 - Interactive section Presentation
ICRA 2016 - Interactive section PresentationICRA 2016 - Interactive section Presentation
ICRA 2016 - Interactive section Presentation
 
Vision-Based System for Welding Groove Measurements for Robotic Welding Appli...
Vision-Based System for Welding Groove Measurements for Robotic Welding Appli...Vision-Based System for Welding Groove Measurements for Robotic Welding Appli...
Vision-Based System for Welding Groove Measurements for Robotic Welding Appli...
 
Welding Groove Mapping: Image Acquisition and Processing on Shiny Surfaces - ...
Welding Groove Mapping: Image Acquisition and Processing on Shiny Surfaces - ...Welding Groove Mapping: Image Acquisition and Processing on Shiny Surfaces - ...
Welding Groove Mapping: Image Acquisition and Processing on Shiny Surfaces - ...
 
Automated control module based on VBM for shipyard welding applications: Stud...
Automated control module based on VBM for shipyard welding applications: Stud...Automated control module based on VBM for shipyard welding applications: Stud...
Automated control module based on VBM for shipyard welding applications: Stud...
 
An Unconstrained Dataset for Non-stationary Video Based Fire Detection
An Unconstrained Dataset for Non-stationary Video Based Fire DetectionAn Unconstrained Dataset for Non-stationary Video Based Fire Detection
An Unconstrained Dataset for Non-stationary Video Based Fire Detection
 
Um Sistema De Detecção De Fogo Baseado Em Vídeo
Um Sistema De Detecção De Fogo Baseado Em VídeoUm Sistema De Detecção De Fogo Baseado Em Vídeo
Um Sistema De Detecção De Fogo Baseado Em Vídeo
 
Um sistema de detecção de chamas utilizando RF e SVM (Short Version)
Um sistema de detecção de chamas utilizando RF e SVM (Short Version)Um sistema de detecção de chamas utilizando RF e SVM (Short Version)
Um sistema de detecção de chamas utilizando RF e SVM (Short Version)
 
G xserver curso-actualizgxxev1
G xserver curso-actualizgxxev1G xserver curso-actualizgxxev1
G xserver curso-actualizgxxev1
 
20 pratico cursogxxbr
20 pratico cursogxxbr20 pratico cursogxxbr
20 pratico cursogxxbr
 
18 indice cursogxx
18 indice cursogxx18 indice cursogxx
18 indice cursogxx
 
17 kb versoes-curso-gxxbr
17 kb versoes-curso-gxxbr17 kb versoes-curso-gxxbr
17 kb versoes-curso-gxxbr
 

Introdução OpenCV (Pt-Br) com exemplos

  • 1. Uma Rápida Introdução ao OpenCV Cristiano Rafael Steffens cristianosteffens@furg.br Universidade Federal do Rio Grande – FURG Centro de Ciências Computacionais
  • 2. Agenda  O que é a OpenCV?  Como instalar?  Hello World?  O que podemos fazer com OpenCV?
  • 3. O que é OpenCV?  OpenCV (Open Source Computer Vision) é uma biblioteca de programação com funções de visão computacional de tempo real.  Distribuída sob a licença BSD.  Possui interfaces para C/C++, Python.  Possui suporte para Windows, Linux Androide Mac OS.
  • 4. Como instalar a OpenCV?  Instalação Manual (Linux):  http://docs.opencv.org/doc/tutorials/introduction/linux_install/linu x_install.html  Verificar versão instalada utilizando o comando: #pkg-config --modversion opencv  Confirmar a existência da pasta que contém os headers: /usr/local/include/opencv  Primeiro projeto utilizando CMake: http://docs.opencv.org/doc/tutorials/introduction/linux_gcc_cma ke/linux_gcc_cmake.html
  • 5. Como instalar a OpenCV?  Máquina virtual do ROS (Já vem com a OpenCv):  Download em: http://nootrix.com/2014/09/ros-indigo-virtual-machine/  Se estiver utilizando Virtual Box precisa instalar o Extension Pack para habilitar USB 2.0 *  Para habilitar o uso da webcam do computador é necessário a instalação do Cheese, GUVCView e os drivers da câmera.  Mais informações podem ser encontradas em: https://siddhantahuja.wordpress.com/2011/07/20/working-with- ros-and-opencv-draft/
  • 6. Como instalar a OpenCV?  No Windows:  Download do arquivo em http://opencv.org/downloads.html  Configuração do caminho dos binários no path  Procedimento detalhado: http://docs.opencv.org/doc/tutorials/introduction/windows_insta ll/windows_install.html http://docs.opencv.org/doc/tutorials/introduction/windows_visua l_studio_Opencv/windows_visual_studio_Opencv.html
  • 7. Aplicações da OpenCV  A biblioteca OpenCV é dividida em módulos  core - define as principais estruturas de dados utlizadas pela biblioteca. Ex.: Mat e Point.  improc - Módulo de processamento de imagem que inclui filtros lineares e não lineares além de transformações geométricas.  highgui - Módulo com funções de interface como criação de janelas.  objdetect - Módulo com funções de detecção de objetos. Ex: haar, cascade classifiers.  ml – Módulo com funções de Machine Learning. Ex: classificadores de árvore, knn, redes neurais, svm e classificadores bayesianos.  A lista complete pode ser obtida em http://docs.opencv.org/modules/refman.html
  • 9. Importante!! cv::Mat // Operador de atribuição A = B; // Mostrar no console cout << A; // Clonar uma matriz cv::Mat F = A.clone(); // Utilizar parte de uma matriz definindo uma região de interesse cv::Mat D (A, cv::Rect(10, 10, 100, 100)); // Criando uma Mat cv::Mat M(2,2, CV_8UC3); cv::Mat O = cv::Mat::ones(3, 3, CV_32F); cv::Mat Z = cv::Mat::zeros(3,3, CV_8UC1); // Alterar uma posição (branco) A.at<uchar>(x,y) = 255;
  • 10. Olá turma!!  // includes da opencv #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> int main() { // lê a imagem para uma matriz cv::Mat image = cv::imread("img.jpg"); // cria uma janela para mostrar a imagem cv::namedWindow("Tutorial OpenCV - FURG"); // mostra a imagem cv::imshow( "Tutorial OpenCV - FURG", image); // aguarda 5000 ms cv::waitKey(5000); return 1; }
  • 11. Olá mundo!!  // includes da opencv #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> int main() { // lê a imagem para uma matriz cv::Mat image = cv::imread("img.jpg"); //cria uma matriz para guarder a imagem em escala de cinza cv::Mat gray_image; // converte a cor cv::cvtColor( image, gray_image, CV_BGR2GRAY); // cria uma janela para mostrar a imagem cv::namedWindow(“Tutorial OpenCV - FURG"); // mostra a imagem cv::imshow( " Tutorial OpenCV - FURG ", gray_image); // aguarda 5000 ms cv::waitKey(5000); return 1; }
  • 12. Realçando uma imagem // lê a imagem para uma matriz cv::Mat image = cv::imread("E:/trash/img.jpg"); if( ! image.empty() ){ // cria as matrizes cv::Mat smooth, sharp, difference; // cria a versão suavisada através da gaussiana cv::GaussianBlur(image, smooth, cv::Size(9,9), .7); // adiciona ao original (unsharp filter) cv::addWeighted(image, 1.5, smooth, -0.5, 1, sharp); // calcula a diferença entre as imagens cv::absdiff(image, sharp, difference); // mostra a imagem cv::imshow("Tutorial OpenCV - FURG (original)", image); cv::imshow("Tutorial OpenCV - FURG (realçada)", sharp); cv::imshow("Tutorial OpenCV - FURG (diferença)", difference); // salva as imagens em arquivo cv::imwrite("sharp.png", sharp); }
  • 13. Encontrando bordas /// Converte a imagem para escala de cinza cv::cvtColor( src, src_gray, CV_BGR2GRAY ); /// Remove o ruído da imagem utilizando um filtro de kernel 3x3 cv::blur( src_gray, detected_edges, Size(3,3) ); /// Detector de bordas de Canny /// origem, saída, threshold baixo, threshold alto, kernel size ); cv::Canny( detected_edges, detected_edges, 100, 200, 3 ); /// mostra a saída cv::imshow("bordas", detected_edges);  Exemplo utilizando trackbar para controlar o threshold: http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/canny_dete ctor/canny_detector.html