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

PPTX
Compilando e Usando OpenCV v. 3.0.0
ODP
introdução a visão compuutacional com opencv e python
PDF
Introdução à biblioteca OpenCV
PPTX
Introdução ao processamento de imagens com OpenCV (cont)
PPTX
Introdução ao CMake
PPT
Simpósio Unicruz: OpenCV + Python (parte 1)
PPTX
Tchelinux 2014 visão computacional
PDF
Compilando e Usando OpenCV v. 3.0.0
introdução a visão compuutacional com opencv e python
Introdução à biblioteca OpenCV
Introdução ao processamento de imagens com OpenCV (cont)
Introdução ao CMake
Simpósio Unicruz: OpenCV + Python (parte 1)
Tchelinux 2014 visão computacional

Mais procurados (11)

PDF
Introdução ao Node.js
PDF
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...
PDF
Curso de Node JS Básico
PDF
TDC2016SP - Trilha Linux Embarcado
PPTX
Testes com javascript
PPTX
MSDN Webcast - Melhores práticas cross browser
PPTX
Tutorial JavaFX simples
PDF
Introdução à OpenGL
PPTX
Arduino e python
PDF
Pós Ruy - 2 e 3 Camadas - Teste de componentes
PPTX
Node.js para desenvolvedores .NET
Introdução ao Node.js
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...
Curso de Node JS Básico
TDC2016SP - Trilha Linux Embarcado
Testes com javascript
MSDN Webcast - Melhores práticas cross browser
Tutorial JavaFX simples
Introdução à OpenGL
Arduino e python
Pós Ruy - 2 e 3 Camadas - Teste de componentes
Node.js para desenvolvedores .NET
Anúncio

Destaque (20)

PDF
Sistema de Reconhecimento de Placas de Carro (Brasil) - Visão Computacional/O...
PDF
Projeto de reconhecimento de placas (2)
PDF
Comunicação Serial Linux
PPT
Introdução à visão computacional utilizando software livre
ODP
Corrigindo o vestibular com Python e OpenCV
PPTX
Visão computacional em embarcados
PDF
Técnicas de PDI com Java - Ercemapi 2009
PDF
Apresentação visão computacional
PDF
Artigo tecpar ráfagan - Pesquisando a viabilidade de utilização de engin...
PPTX
Optimization of computer vision algorithms in codesign methodologies
PDF
White Paper: Sistemas de Visão Artificial Industrial - Factores a Ter em Cons...
PDF
Processamento Digital de Imagens - Fundamentos e Aplicações
PPTX
Sensoriamento remoto aplicado à estudos florestais igor narvaes_iii_saef
PDF
Unama br edinaldo_la-roque_oficina_kinect_20160917_2030
PDF
Reconhecimento automático de emoções
PPT
Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect
ODP
Computação Gráfica - Introdução ao OpenGL
PPTX
2014 - Multimídia e Internet - 04 Imagem Digital - Bitmaps
ODP
Computação Gráfica - Transformações Geométricas no Plano e no Espaço
Sistema de Reconhecimento de Placas de Carro (Brasil) - Visão Computacional/O...
Projeto de reconhecimento de placas (2)
Comunicação Serial Linux
Introdução à visão computacional utilizando software livre
Corrigindo o vestibular com Python e OpenCV
Visão computacional em embarcados
Técnicas de PDI com Java - Ercemapi 2009
Apresentação visão computacional
Artigo tecpar ráfagan - Pesquisando a viabilidade de utilização de engin...
Optimization of computer vision algorithms in codesign methodologies
White Paper: Sistemas de Visão Artificial Industrial - Factores a Ter em Cons...
Processamento Digital de Imagens - Fundamentos e Aplicações
Sensoriamento remoto aplicado à estudos florestais igor narvaes_iii_saef
Unama br edinaldo_la-roque_oficina_kinect_20160917_2030
Reconhecimento automático de emoções
Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect
Computação Gráfica - Introdução ao OpenGL
2014 - Multimídia e Internet - 04 Imagem Digital - Bitmaps
Computação Gráfica - Transformações Geométricas no Plano e no Espaço
Anúncio

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

DOC
C sharp lesson1
PPTX
TypeScript - Campus party 2013
PDF
Integração Contínua com Cruise Control e phpUnderControl
PDF
Linguagem c
PDF
CakePHP
ODP
ASP.NET e Visual Studio 2010
PDF
JasperReports Tecnicas de geracao_de_relatorios1
PDF
Integração Contínua com CruiseControl e phpUnderControl
PDF
Integracao Contínua com CruiseControl e phpUnderControl
PPT
Cake Php
PDF
Machine Learning: Do Notebook ao modelo em produção
PPT
Java Seminar
PDF
Integração Contínua com CruiseControl e phpUnderControl
PDF
Desenvolvimento Web com Simfony Framework.
PDF
PDF
Dev401 novos recursos do microsoft visual basic 2010
PDF
PDF
Gerência de redes utilizando o cacti
PDF
Java introdução ao java
PPT
Mock Objects
C sharp lesson1
TypeScript - Campus party 2013
Integração Contínua com Cruise Control e phpUnderControl
Linguagem c
CakePHP
ASP.NET e Visual Studio 2010
JasperReports Tecnicas de geracao_de_relatorios1
Integração Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControl
Cake Php
Machine Learning: Do Notebook ao modelo em produção
Java Seminar
Integração Contínua com CruiseControl e phpUnderControl
Desenvolvimento Web com Simfony Framework.
Dev401 novos recursos do microsoft visual basic 2010
Gerência de redes utilizando o cacti
Java introdução ao java
Mock Objects

Mais de Cristiano Rafael Steffens (20)

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

Último (7)

PDF
Evolução em código: algoritmos genéticos com PHP
PDF
Dos requisitos ao código: como criar código rastreável em PHP
PDF
apresentacao introducao computacao ead.pdf
PPTX
Mapeamento de Objeto para Tabela Relacional
DOC
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
DOC
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO
PPTX
Curso de Windows 11 resumido na prática.pptx
Evolução em código: algoritmos genéticos com PHP
Dos requisitos ao código: como criar código rastreável em PHP
apresentacao introducao computacao ead.pdf
Mapeamento de Objeto para Tabela Relacional
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO
Curso de Windows 11 resumido na prática.pptx

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