14
Uma Rápida Introdução ao OpenCV Cristiano Rafael Steffens [email protected] Universidade Federal do Rio Grande – FURG Centro de Ciências Computacionais

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

Embed Size (px)

Citation preview

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

Uma RápidaIntrodução ao OpenCVCristiano Rafael Steffens

[email protected]

Universidade Federal do Rio Grande – FURG

Centro de Ciências Computacionais

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

Agenda

O que é a OpenCV?

Como instalar?

Hello World?

O que podemos fazer com OpenCV?

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

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

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

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

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

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

Importante!! cv::Mat

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

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

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

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

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

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

Pretty cool! Huh!