Top Ad unit 728 × 90

Recientes

recent

Curso OpenCV 3.0 y C++ con Visual Studio 2013 (11-30) - Detector de Bordes Canny en Video OpenCv y C++

Este código captura los frames desde la webcam, los muestra en una ventana llamada “Original”, luego convierte la imagen a escala de grises y la almacena en la variable gray, se aplica el método de Canny para la detección de contornos y finalmente muestra la imagen procesada en una ventana llamada “Procesada”.


Código:Detector de Bordes Canny en OpenCv 3.0 y C++

// CursoOpenCV2410.cpp: Juan Carlos Arcila Díaz.

#include "stdafx.h"
#include "opencv2\opencv.hpp"

using namespace cv;
using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
 // Especificamos el dispositivo a utilizar (Archivo de Vídeo, ponemos 0 si queremos utilizar cámara)
 VideoCapture cap("D:\\canny.3gp");  
 // Se declara una variable de tipo Mat de tamaño 320x240
 // con 3 canales (rojo, verde, azul - imagen a color) en la cual guardaremos y procesaremos la imagen
 Mat img = Mat::zeros(Size(320, 240), CV_8UC3); 
 Mat gray = Mat::zeros(Size(320, 240), CV_8UC1);  // imagen en escala de grises
 Mat edges = Mat::zeros(Size(320, 240), CV_8UC1); // imagen con contornos, de un canal

 namedWindow("Original", 1);
 namedWindow("Procesada", 1);

 //Creamos un ciclo infinito para mostrar la secuencia de Vídeo
 while (1){
  //Leemos uno a uno los frame de la secuencia de vídeo
  cap.read(img);

  // Se muestra la imagen capturada en la ventana Original
  imshow("Original", img); 

  // se transforma la imagen, de RGB a una imagen en escala de grises
  cvtColor(img, gray, CV_RGB2GRAY); 

  // se aplica el método de canny para la detección de contornos
  Canny(gray, edges, 50, 200, 3);

  // se muestra la imagen con los contornos
  imshow("Procesada", edges);             

  // Tiempo de espera de 50 milisegundos (muy necesario para que se muestre el vídeo)
  //este tiempo es 1000/FPS (fotogramas por segundo)
  int c = waitKey(50); 

  // Si presionamos Esc, termina.
  if (c == 27)           
   break;
 }
 //return(1);
}

Existe un ejemplo más completo en /doc/tutorials/imgproc/imgtrans/canny_detector/canny_detector.html

// CursoOpenCV2410.cpp: Juan Carlos Arcila Díaz.

#include "stdafx.h"
#include "opencv2\opencv.hpp"
#include "opencv2\imgproc\imgproc.hpp"
#include "opencv2\highgui\highgui.hpp"
#include 
#include 

using namespace cv;

/// Variables Globales

Mat src, src_gray;
Mat dst, detected_edges;

int edgeThresh = 1;
int lowThreshold;
int const max_lowThreshold = 100;
int ratio = 3;
int kernel_size = 3;
char* window_name = "Edge Map";

void CannyThreshold(int, void*)
{
 /// Reducimos el ruído con un kernel 3x3
 blur(src_gray, detected_edges, Size(3, 3));

 /// Detector de Canny
 Canny(detected_edges, detected_edges, lowThreshold, lowThreshold*ratio, kernel_size);

 /// Uso de la salida de Canny como una máscara, mostramos nuestro resultado
 dst = Scalar::all(0);

 src.copyTo(dst, detected_edges);
 imshow(window_name, dst);
}


int _tmain(int argc, _TCHAR* argv[])
{
 // Especificamos el dispositivo a utilizar (Archivo de Vídeo ponemos 0 si queremos utilizar cámara)
 VideoCapture cap("D:\\canny.3gp");  
 int fps = cap.get(CV_CAP_PROP_FPS);
 int retardo = 1000 / fps;


 while (1){
  //Leemos uno a uno los frame de la secuencia de vídeo
  cap.read(src);

  if (!src.data)
  {
   return -1;
  }

  /// Creamos una matriz del mismo tipo y tamaño que src (para dst)
  dst.create(src.size(), src.type());

  /// Convertimos la imagen a escala de Grises
  cvtColor(src, src_gray, CV_BGR2GRAY);

  /// Creamos una ventana
  namedWindow(window_name, CV_WINDOW_AUTOSIZE);

  /// Creamo un Trackbar para que el usuario seleccione el umbral
  createTrackbar("Min Umbral:", window_name, &lowThreshold, max_lowThreshold, CannyThreshold);

  /// Mostramos la imagen
  CannyThreshold(0, 0);

  waitKey(retardo);
 }
  return 0;
}
Saludos Imperio, un abrazo a la distancia!
Curso OpenCV 3.0 y C++ con Visual Studio 2013 (11-30) - Detector de Bordes Canny en Video OpenCv y C++ Reviewed by Juan Carlos Arcila Díaz on 7:50 Rating: 5

No hay comentarios:

All Rights Reserved by www.IncanatoIT.com - Desarrollando Software © 2014 - 2015
Powered By Blogger, Designed by Sweetheme

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

IncanatoIt.com. Con la tecnología de Blogger.