introdução opencv (pt-br) com exemplos
TRANSCRIPT
![Page 1: Introdução OpenCV (Pt-Br) com exemplos](https://reader036.vdocuments.mx/reader036/viewer/2022081721/55ab132a1a28ab25698b488e/html5/thumbnails/1.jpg)
Uma RápidaIntrodução ao OpenCVCristiano Rafael Steffens
Universidade Federal do Rio Grande – FURG
Centro de Ciências Computacionais
![Page 2: Introdução OpenCV (Pt-Br) com exemplos](https://reader036.vdocuments.mx/reader036/viewer/2022081721/55ab132a1a28ab25698b488e/html5/thumbnails/2.jpg)
Agenda
O que é a OpenCV?
Como instalar?
Hello World?
O que podemos fazer com OpenCV?
![Page 3: Introdução OpenCV (Pt-Br) com exemplos](https://reader036.vdocuments.mx/reader036/viewer/2022081721/55ab132a1a28ab25698b488e/html5/thumbnails/3.jpg)
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.
![Page 4: Introdução OpenCV (Pt-Br) com exemplos](https://reader036.vdocuments.mx/reader036/viewer/2022081721/55ab132a1a28ab25698b488e/html5/thumbnails/4.jpg)
Como instalar a OpenCV?
Instalação Manual (Linux):
http://docs.opencv.org/doc/tutorials/introduction/linux_install/linux_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_cmake/linux_gcc_cmake.html
![Page 5: Introdução OpenCV (Pt-Br) com exemplos](https://reader036.vdocuments.mx/reader036/viewer/2022081721/55ab132a1a28ab25698b488e/html5/thumbnails/5.jpg)
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/
![Page 6: Introdução OpenCV (Pt-Br) com exemplos](https://reader036.vdocuments.mx/reader036/viewer/2022081721/55ab132a1a28ab25698b488e/html5/thumbnails/6.jpg)
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_install/windows_install.html
http://docs.opencv.org/doc/tutorials/introduction/windows_visual_studio_Opencv/windows_visual_studio_Opencv.html
![Page 7: Introdução OpenCV (Pt-Br) com exemplos](https://reader036.vdocuments.mx/reader036/viewer/2022081721/55ab132a1a28ab25698b488e/html5/thumbnails/7.jpg)
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: classificadoresde árvore, knn, redes neurais, svm e classificadores bayesianos.
A lista complete pode ser obtida emhttp://docs.opencv.org/modules/refman.html
![Page 8: Introdução OpenCV (Pt-Br) com exemplos](https://reader036.vdocuments.mx/reader036/viewer/2022081721/55ab132a1a28ab25698b488e/html5/thumbnails/8.jpg)
Importante!! cv::Mat
![Page 9: Introdução OpenCV (Pt-Br) com exemplos](https://reader036.vdocuments.mx/reader036/viewer/2022081721/55ab132a1a28ab25698b488e/html5/thumbnails/9.jpg)
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;
![Page 10: Introdução OpenCV (Pt-Br) com exemplos](https://reader036.vdocuments.mx/reader036/viewer/2022081721/55ab132a1a28ab25698b488e/html5/thumbnails/10.jpg)
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;
}
![Page 11: Introdução OpenCV (Pt-Br) com exemplos](https://reader036.vdocuments.mx/reader036/viewer/2022081721/55ab132a1a28ab25698b488e/html5/thumbnails/11.jpg)
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;
}
![Page 12: Introdução OpenCV (Pt-Br) com exemplos](https://reader036.vdocuments.mx/reader036/viewer/2022081721/55ab132a1a28ab25698b488e/html5/thumbnails/12.jpg)
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);
}
![Page 13: Introdução OpenCV (Pt-Br) com exemplos](https://reader036.vdocuments.mx/reader036/viewer/2022081721/55ab132a1a28ab25698b488e/html5/thumbnails/13.jpg)
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_detector/canny_detector.html
![Page 14: Introdução OpenCV (Pt-Br) com exemplos](https://reader036.vdocuments.mx/reader036/viewer/2022081721/55ab132a1a28ab25698b488e/html5/thumbnails/14.jpg)
Pretty cool! Huh!