Introdução ao processamento de imagens com OpenCV (cont)

842 visualizações

Publicada em

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

Sem downloads
Visualizações
Visualizações totais
842
No SlideShare
0
A partir de incorporações
0
Número de incorporações
14
Ações
Compartilhamentos
0
Downloads
22
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Introdução ao processamento de imagens com OpenCV (cont)

  1. 1. Uma Rápida Introdução ao OpenCV (cont.) Cristiano Rafael Steffens cristianosteffens@furg.br Universidade Federal do Rio Grande – FURG Centro de Ciências Computacionais
  2. 2. Revisão  Quais os principais tipos de dados da OpenCV?  Quais são módulos da OpenCV?  Qual o namespace da OpenCV?  Para que são utilizados os comandos imread, imwrite, imshow, cvtColor, blur, GaussianBlur, normalize, erode, dilate?
  3. 3. Onde posso encontrar outros exemplos?  Tutoriais oficiais: http://docs.opencv.org/doc/tutorials/tutorials.html  OCR, integração com Web (HTML, Javascript), solucionador de labiririnto e outros projetos interesantes: http://opencv-code.com
  4. 4. Importante!! cv::Mat
  5. 5. Desenhar um quadrado preto com um “X”, um círculo e um retângulo /// Cria uma matriz zerada do tamanho Mat minha_imagem = Mat::zeros(tamanho,tamanho, CV_8UC1); for(int y = 0; y < minha_imagem.rows; y++) { for(int x = 0; x < minha_imagem.cols; x++) { if(x==y || (tamanho-x) == y) minha_imagem.at<uchar>(x,y) = 255; } } ///Desenha um cíurculo no centro com raio 0.20 circle(minha_imagem, Point(tamanho/2, tamanho/2), tamanho/5, Scalar::all(127), 1); /// Desenha um retângulo rectangle(minha_imagem, Point(tamanho/4, tamanho/4), Point(3*tamanho/4, 3*tamanho/4),Scalar::all(200), 1);
  6. 6. Detectar círculos utilizando a transformada de Hough /// src_gray: Input image (grayscale) /// circles: A vector that stores sets of 3 values: x_{c}, y_{c}, r for each detected circle. /// CV_HOUGH_GRADIENT: Define the detection method. Currently this is the only one available in OpenCV /// dp = 1: The inverse ratio of resolution /// min_dist = src_gray.rows/8: Minimum distance between detected centers /// param_1 = 200: Upper threshold for the internal Canny edge detector /// param_2 = 100*: Threshold for center detection. /// min_radius = 0: Minimum radio to be detected. If unknown, put zero as default. /// max_radius = 0: Maximum radius to be detected. If unknown, put zero as default HoughCircles( src_gray, circles, CV_HOUGH_GRADIENT, 1, src_gray.rows/16, 200, 100, 0, 0 );
  7. 7. Filtros Lineares Funções: Blur GaussianBlur medianBlur bilateralFilter
  8. 8. Threshold  Binary  Binary Inverted  Truncate To Zero  To Zero Inverted
  9. 9. Trabalhando com Vídeos // lê video que veio no primeiro argumento VideoCapture cap( argv[1] ); if ( !cap.isOpened() ){ cout << "Cannot open the video file" << endl; return -1; } Mat frame; // enquanto existirem frames while( cap.read(frame) ) { // mostra a imagem imshow("Video", frame); // espera até que um esc seja pressionado if(waitKey(30) == 27) { break; } }
  10. 10. Histogramas Definição: Um histograma é uma ferramenta de análise e representação de dados quantitativos, agrupados em classes de frequência que permite distinguir a forma, o ponto central e a variação da distribuição, além de outros dados como amplitude e simetria na distribuição dos dados. Documentação: http://docs.opencv.org/modules/imgproc/doc/histograms.html
  11. 11. Pretty cool! Huh!

×