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

3.482 visualizações

Publicada em

Uma rápida introdução ao OpenCV apresenta somente o essencial. Esta apresentação vai direto ao ponto, trazendo exemplos para sair programando. Todos os algoritmos foram testados utilizando a versão 2.4.10 da biblioteca. Comentários no código em Pt-Br.

Publicada em: Software
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
3.482
No SlideShare
0
A partir de incorporações
0
Número de incorporações
12
Ações
Compartilhamentos
0
Downloads
121
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

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

  1. 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. 2. Agenda  O que é a OpenCV?  Como instalar?  Hello World?  O que podemos fazer com OpenCV?
  3. 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. 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. 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. 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. 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
  8. 8. Importante!! cv::Mat
  9. 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. 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. 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. 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. 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
  14. 14. Pretty cool! Huh!

×