You are on page 1of 19

INTRODUCCION.

En los ultimos 15 aos nace Open Vc una librera de


programacion orientada a la Vision en tiempo real por el
ordenador
los objetivos del proyecto fueron descrito como

Difundir el conocimiento de visin, proporcionando


una infraestructura comn que los desarrolladores
podran construir, por lo que el cdigo sera ms
fcilmente legibles y transferibles.

Visin basada en aplicaciones comerciales anticipadas


haciendo cdigo portable, rendimiento optimizado
disponible de forma gratuita, con una licencia que no
requera ser abierto o liberarse.

PLANTEAMIENTO DEL PROBLEMA

Bolivia se encuentra dentro de los paises con peor


educacion vial, y se registran altos numeros de
accidentes viales que ocacionan perdidas humanas y
perdidas economicas para el estado
El desorden vial es grande en Bolivia

ENUNCIADO

El software que desarollaria usando la librera OPEN VC


seria utilizado para la deteccion de rostros y la
segmentacion de imgenes para poder reconocer las placas
de los automoviles que infrijan la ley, tambien detectar
al infractor y a la victima, de forma instantanea y
automatica

DESCRIPCION

Se trataria de resolver el desorden vial que existe en


nuestro Pais y la delicuencia del mismo, detectando y

condenando a los infractores y de esa forma intentar


erradicar estos problemas

FORMULACION

Identificar infractores en el trafico urbano


Identificar de forma instantanea vehiculos robados
Identificar y multar de forma instantania a delitos
viales,

Justificacin
Objetivos:
Objetivos General
El objetivo general de este proyecto es mejorar el
sistema de seguridad de nuestro Pais

Objetivos Especficos.Creacion de un software de vision por ordenador que


permita:

Ordenar trafico vehicular


Detectar delincuentes y victimas
Mejorar la seguridad

MARCO REFERENCIAL

Antecedentes de la investigacion.-

Historia

Lanzado oficialmente en 1999, el proyecto OpenCV fue


inicialmente una iniciativa Intel Research para
avanzar CPU aplicaciones -Intensivo, parte de una serie de
proyectos, entre ellos en tiempo real el trazado de rayos y
las paredes de visualizacin 3D. Los principales
contribuyentes al proyecto incluyeron una serie de expertos
en optimizacin de Intel Rusia, as como la biblioteca de
rendimiento del equipo de Intel.
La primera versin alfa de OpenCV fue lanzado al pblico en
la Conferencia IEEE sobre Visin por Computador y
Reconocimiento de Patrones en 2000, y cinco betas fueron
liberados entre 2001 y 2005. La primera versin 1.0 fue
lanzado en 2006. A mediados de 2008, obtuvo OpenCV apoyo
corporativo deWillow Garage , y ahora est de nuevo bajo
desarrollo activo. Una versin 1.1 "pre-estreno" fue lanzado
en octubre de 2008.
El segundo gran lanzamiento de la OpenCV estaba en octubre de
2009. OpenCV 2 incluye cambios importantes en el C +
+ interfaz, con el objetivo de facilitar, ms patrones de
tipo seguro, nuevas funciones y mejores implementaciones para
los ya existentes en trminos de rendimiento (especialmente
en mltiples sistemas centrales). Comunicados oficiales ahora
se producen cada seis meses [2] y desarrollo ahora se realiza
por un equipo ruso independiente apoyado por las empresas
comerciales.
En agosto de 2012, el apoyo a OpenCV se hizo cargo de una
fundacin sin fines de lucro OpenCV.org, que mantiene un
desarrollador [3] y el sitio del usuario. [4]
Aplicaciones

openFrameworks ejecutan el OpenCV add-on ejemplo


reas de aplicacin de OpenCV incluyen:

Juegos de herramientas de funciones en 2D y 3D

Egomotion estimacin

Sistema de reconocimiento facial

Reconocimiento de gestos

La interaccin persona-ordenador (HCI)

Robtica mvil

Movimiento comprensin

Identificacin de objetos

La segmentacin y el reconocimiento

Estereopsis estreo visin: la percepcin de profundidad


de 2 cmaras

Estructura del movimiento (SFM)

Seguimiento del movimiento

Realidad aumentada

Para apoyar algunas de las reas antes mencionadas, OpenCV


incluye una estadstica aprendizaje automtico biblioteca que
contiene:

Impulso (meta-algoritmo)

Decisin de aprendizaje rbol

Impulsar la pendiente rboles

Algoritmo expectativa de maximizacin

k-vecino ms cercano algoritmo

Ingenuo clasificador de Bayes

Las redes neuronales artificiales

Bosque aleatoria

Mquina de soporte vectorial (SVM)

MARCO TEORICO
Que es OPEN CV?

OpenCV (Open Source Computer Vision) es una librera


software open-source de visin artificial y machine learning.
OpenCV provee una infraestructura para aplicaciones de visin
artificial.
OpenCV tiene una licencia BSD, lo que permite utilizar y
modificar el cdigo, tiene una comunidad de ms de 47000
personas y ms de 7 millones de descargadas. Es una librera
muy usada a nivel comercial, desde Google, Yahoo, Microsoft,
Intel, IBM, Sony, Honda, Toyota, Applied Minds, VideoSurf,
Zeitera
La librera tiene ms de 2500 algoritmos, que incluye
algoritmos de machine learning y de visin artificial para
usar.
Estos algoritmos permiten identificar objetos, caras,
clasificar acciones humanas en vdeo, hacer tracking de
movimientos de objetos, extraer modelos 3D, encontrar
imgenes similares, eliminar ojos rojos, seguir el movimiento
de los ojos, reconocer escenarios,
Se usa en aplicaciones como la deteccin de intrusos en
vdeos, monitorizacin de equipamientos, ayuda a navegacin
de robots, inspeccionar etiquetas en productos,

OpenCV est escrito en C++, tiene interfaces en C++, C,


Python, Java y MATLAB interfaces y funciona en Windows,
Linux, Android y Mac OS. O

Segmentacin de imgenes

La segmentacin en el campo de la visin artificial es el


proceso de dividir una imagen digital en varias partes
(grupos de pxeles) u objetos. El objetivo de la segmentacin
es simplificar y/o cambiar la representacin de una imagen en
otra ms significativa y ms fcil de analizar. La
segmentacin se usa tanto para localizar objetos como para
encontrar los lmites de estos dentro de una imagen. Ms
precisamente, la segmentacin de la imagen es el proceso de
asignacin de una etiqueta a cada pxel de la imagen de forma
que los pxeles que compartan la misma etiqueta tambin
tendrn ciertas caractersticas visuales similares.
El resultado de la segmentacin de una imagen es un conjunto
de segmentos que cubren en conjunto a toda la imagen, o un
conjunto de las curvas de nivel extradas de la imagen (vase
la deteccin de bordes). Cada uno de los pxeles de una
regin son similares en alguna caracterstica, como el color,
la intensidad o la textura. Regiones adyacentes son
significativamente diferentes con respecto a la(s) misma(s)
caracterstica(s).

La segmentacin de imgenes divide la imagen en sus partes


constituyentes hasta un nivel de subdivisin en el que se
aslen las regiones u objetos de inters. Los algoritmos de
segmentacin se basan en una de estas dos propiedades bsicas
de los valores del nivel de gris: discontinuidad o similitud
entre los niveles de gris de pxeles vecinos. Discontinuidad.

Se divide la imagen basndose en cambios bruscos de nivel de


Segmentacin de imgenes Similitud. Se divide la imagen
basndose en la bsqueda de zonas que tengan valores
similares, conforme a unos criterios prefijados:
Crecimiento de regin
Umbralizacin
Discontinuidad. Se divide la imagen basndose en cambios
bruscos de nivel de gris: Deteccin de puntos aislados
Deteccin de lneas
Deteccin de bordes

Deteccin de bordes
La deteccin de bordes es un campo bien desarrollado por s
mismo en el procesamiento de imgenes. Los lmites de
regiones y los bordes estn estrechamente relacionados, ya
que a menudo hay un fuerte ajuste en la intensidad en los
lmites de las regiones. Las tcnicas de deteccin de bordes
pueden ser usadas como otra tcnica de segmentacin ms. Los
bordes identificados por la deteccin de bordes en ocasiones
estn desconectados. Para segmentar un objeto a partir de una
imagen sin embargo, es necesario que los bordes formen
figuras cerradas.

QUADTREE DECOMPOSITION DEMO (APP)

Transformadas de Hough
Las transformadas de Hough determinan la localizacin de
curvas parametrizadas dentro de una imagen. En este caso se
emplearn para la localizacin de lneas rectas y crculos.
La entrada a este algoritmo es una imagen binarizada, donde
se ha etiquetado los pxeles representantes de los bordes con
el nivel 1 y al fondo se le coloca con nivel 0. Para esta
prctica se he elegido el detector de Canny. Sitese en el

directorio de /Segmentacion/Houhg, cargue la imagen de los


cables de un telefrico y aplique el detector de Canny:
>> imgEnt=imread('cables_gris.bmp');imshow(imgEnt);pause;
>> imgBorde=edge(imgEnt,'canny');imshow(imgBorde);
Vare los parmetros del detector de Canny para mejorar los
resultados de etiquetacin de los bordes. Considrese que
slo se desea determinar las lneas de gran extensin. El
siguiente paso ser preparar el espacio paramtrico y aplicar
posteriormente la transformacin:
>>theta = 0:180;
>>[acum,rho] = radon(imgBorde,theta);
>>imagesc(theta,rho,acum), colorbar;
>>xlabel ('theta (grados)'), ylabel ('rho (pixeles desde el
centro)')
>>title('Espacio de lneas');
Una vez realizada la transformacin, la seleccin de las
rectas depender del umbral colocado en las votaciones. La
transformada de Hough hace del espacio paramtrico una
rejilla de votaciones; por cada pxel seleccionado da unos
votos a cada celda elegida segn la variacin del ngulo de
la normal de la recta, . Slo se considerarn aquellas
rectas que superen ese umbral que sern las que se
representen:
>> [x,y] = find(acum>100);
>>hold on; plot(theta(y),rho(x),'*r');hold off;
>>t = -theta(y')*pi/180;pause;
>>lineas = [cos(t)' sin(t)' -rho(x)];
>>cy = size(imgEnt,1)/2-1;
>>cx = size(imgEnt,2)/2-1;
>>lineas(:,3) = lineas(:,3) - lineas(:,1)*cx lineas(:,2)*cy;
>>imshow(imgEnt);

>>draw_lines(lineas); Haga una funcin en Matlab donde pueda


decirle el nombre del fichero de la imagen, los parmetros
del operador de Canny y el umbral de las votaciones.
Aplquelo sobre la imagen circuit.tif.

Tcnicas de divisin y fusin (split & merge) y rboles


cuaternarios (quadtree) En vez de emplear semillas para el
crecimiento de regiones, se pasa a la descomposicin de la
imagen en regiones arbitrarias, de forma que si la regin es
muy discrepante con algn tipo de regla se dividir, en caso
contrario, buscar fusionarse con regiones adyacentes. Para
la particin de la imagen en regiones arbitraria se suele
emplear rboles cuaternarios. Se toma la imagen y se divide
en cuatro rectngulos iguales. Se analiza cada regin, si
sta es muy discrepante se vuelve a dividir en otras cuatro,
generando un rbol cuaternario.
Utilice la demo qtdemo para entender mejor los rboles
cuaternarios
La segmentacin de divisin y fusin de regiones analiza cada
subregin generada por el rbol cuaternario, el cual ha
dividido la imagen en regiones homogneas a diversas
resoluciones. Sitese en el directorio
/Segmentacin/Descomposicion:
>>imgEnt = imread('liftingbody.png');
>>im1=imfilter(imgEnt,fspecial('gaussian'));
>>imgDescomp = qtdecomp(im1,.27);
>>imgDivision = imgEnt;
>>for dim = [128 64 32 16 8 4 2 1] [valores,fila,columna] =
qtgetblk(im1, imgDescomp, dim); if (~isempty(valores))
doublesum = sum(sum(valores,1,'double'),2); end imgDivision =
qtsetblk(imgDivision, imgDescomp, ... dim, doublesum ./
dim^2); end >>imshow([imgEnt,uint8(imgDivision)]);
Una vez dividido la imagen se proceder a la fusin de
regiones adyacentes empleando tcnicas de crecimiento de
regiones:

>>[m n] = size(imgEnt);
>>D = logical(zeros(m, n,'uint8'));
>>imgSegm = zeros(m, n);
>>x=1;y=1;
>>imgDivision=double(imgDivision);
>>i=1; while( size(x,1) ~= 0) imCond = (imgDivision >
(imgDivision(x(1),y(1))-20))... & (imgDivision <
(imgDivision(x(1),y(1))+20)); imCond = imCond & (~D); im1 =
regionGrowing2(imgDivision, x(1), y(1), 20,imCond);
imgSegm(im1)=i; i = i +1; D = D | im1; [x,y]= find(D == 0);
end
>>imgEtiq = label2rgb(imgSegm);
>>imshow(imgEtiq);
Los resultados de la segmentacin se visualizan sobre la
imagen de entrada:
>>borde =edge(imgSegm,'canny');
>>imshow(ImagResMarcado(imgEnt,borde));

Reconocer objetos con OpenCV


Uno de los aspectos ms importantes de la visin artificial
es sin duda el reconocimiento de objetos, de patrones, o
identificacin de figuras y formas. Este reconocimiento puede
ir desde ejemplos muy simples (reconocer en una imagen el
nico objeto de color rojo), hasta posibilidades muy
complejas y tiles que an hoy son prcticamente imposibles
(como cmaras de aeropuerto que detecten terroristas
automticamente reconociendo su cara). Este problema plantea
un gran reto, pero son infinitas sus posibilidades y
aplicaciones.
Planteamiento del problema:
Se hace una foto con una cmara, donde se ven dos bolas, y la
punta de un robot NXT que ser de color verde. Todo esto se
encuentra sobre un fondo blanco. La foto resultante quedara
as:

Como se ve, la foto no tiene mucha calidad, por lo que la


tarea de reconocer objetos por colores se complica. Esto
ayudar a crear un programa mejor, que si resulta til en
este caso servir en la gran mayora de problemas de este
estilo.
El problema consiste en:
1 Abrir la imagen.
2 Buscar todos los puntos rojos de la imagen.
3 Calcular cul sera el centro del objeto rojo.
4 Buscar todos los puntos verdes de la imagen.
5 Calcular cul sera el centro de la punta del NXT (de
donde se hizo la foto).
6 Calcular en qu posicin relativa y a qu distancia se
encuentra el objeto del NXT.
7 Escribir estos datos en un archivo que posteriormente
podemos subir al NXT para interpretarlos y actuar en
consecuencia.
En resumen el problema consiste en detectar la bola, y saber
dnde se encuentra con respecto al NXT. Para llegar a ese
punto se debe preguntar previamente sobre la forma en la que
se almacena la informacin de la imagen.
Qu es una imagen?:
Dentro de un ordenador una imagen no es ms que una gran
secuencia de ceros y unos que se puede leer y modificar a
nuestro antojo. El tamao de las imgenes se mide en pxeles,
que es precisamente la superficie homognea ms pequea de
las que componen una imagen, que se define por su brillo y
color.

Las imgenes en blanco y negro son las ms bsicas, pudiendo


tomar sus pxeles valores entre 0 (completamente negro) y 255
(completamente blanco). Sin embargo las imgenes de color
contienen tres canales de colores distintos (los famosos RGB
(R: rojo, G: verde, B : Azul). Cada canal puede tomar un
valor entre 0 y 255, por ejemplo un R = 255, G = 0, y B = 0
ser un pxel completamente rojo. Si los tres valores son 255
el pxel ser blanco, y si los tres valen 0 el pxel ser
negro. Existe adems el sistema HSB (Hue, Saturation,
Brightness (Matiz, Saturacin, Luminosidad)), con el que
tambin se puede crear cualquier color, y que tiene
transformacin directa a su representacin en el sistema RGB:

Por tanto, cuntos valores hay en una imagen?: el clculo es


sencillo: altura x anchura x canales. Para recorrer una
imagen en OpenCV se va de izquierda a derecha, y de
arriba a abajo. Teniendo en cuenta adems que los canales
estn ordenados en BGR (azul, verde y rojo), si se quiere
acceder al valor rojo del pxel nmero 40 de la fila 24 se
tiene que acceder al dato: anchura_fila*23 +
numero_canales*39 + 2, donde anchura_fila ser la anchura
de la imagen multiplicada por el nmero de canales. Esta es
la nica forma de recorrer imgenes, y se implementa con
bucles anidados como veremos posteriormente.
Cmo detectar un objeto de determinado color?:
Para detectar un objeto de determinado color se necesita
detectar todos los pxeles que lo componen. Para ello se ir
buscando en todos los pxeles de la imagen, calculando si son
o no del color deseado. Cmo saber si por ejemplo es rojo?

En primer lugar se tiene que ver qu datos caractersticos


tiene dicho color. En este caso es sencillo, su dato ms
caracterstico ser que el canal con mayor valor ser el del
rojo. Tambin se debera tener en cuenta que los valores de
los dems canales no deberan ser muy altos, por lo menos no
lo suficiente como para acercarse al valor del canal del
rojo, ya que estos valores podran corresponder a colores
como el morado o el naranja.
Con un color que no sea de los tres bsicos la cosa se
complica un poco; en este caso lo mejor es abrir la imagen
con un editor de imgenes (el Paint por ejemplo), y mirar qu
valores RGB tienen los pxeles del color deseado. As se
puede sacar las caractersticas que determinarn dicho color.
Una vez se tenga todos los pxeles del objeto se puede hacer
varias cosas: cambiar de color los pxeles y mostrar la
imagen resultante por pantalla para ver si ha detectado bien
el objeto:

Se puede adems llevar un contador de cuantos pxeles, y una


suma de sus posiciones, lo que servira para calcular lo que
sera el punto medio de nuestro objeto. Estas coordenadas del
punto medio sern bastante precisas si se cuenta con una gran
cantidad de pxeles del objeto, y ser de gran utilidad para
emplazar dicho objeto con respecto al robot NXT.
Cmo saber la posicin del objeto respecto a nuestro robot?:
Teniendo el punto medio del objeto calculado anteriormente el
proceso es sencillo. Ponemos al robot algo de color
distintivo en la punta, como el ladrillo verde que hemos
puesto al del proyecto. Calculamos el punto medio de dicha
punta verde, tal y como se ha hecho para la bola roja. Una
vez se tiene las coordenadas sabemos si el objeto se
encuentra a la izquierda o derecha, y arriba o abajo del

robot. Adems se puede hallar la distancia al objeto (en


pxeles) mediante la famosa frmula:

Sabiendo toda esta teora ya se puede programar.


Deteccin de un objeto rojo y clculo de distancia respecto
al robot:
Vamos a programar y resolver este problema con OpenCV. Se ir
poniendo el programa por partes y explicando las lneas, pero
recordad que en el programa tiene que ir todo seguido:
Includes:
#include
using namespace std;
Inicio del programa principal y definicin de variables:
int main(int argc, char *argv[])
{
IplImage* img = 0;
int altura,anchura,anchura_fila,canales;
uchar *data;
int i,j;
Cargado de la imagen y recoleccin de los datos de la imagen:
img=cvLoadImage(argv[1]);
if(!img){
printf("No se ha podido cargar la imagen: %sn",argv[1]);
exit(0);
}
altura = img->height;
anchura = img->width;
anchura_fila = img->widthStep;
canales = img->nChannels;
data = (uchar *)img->imageData;
printf(Procesando una imagen de %dx%d pxeles con %d
canalesn,
altura, anchura, canales);

7 a 10 - En OpenCV podemos acceder fcilmente a las


caractersticas de la imagen. Gracias a estos datos podremos
recorrer la imagen fcilmente.
11 - Cogemos los datos de la imagen y los metemos en un
enorme array, que ser el que recorreremos para acceder a los
valores de los pxeles.
Creacin de variables para el clculo de los puntos medios, y
creacin de una ventana:
cvNamedWindow("mainWin", CV_WINDOW_AUTOSIZE);
cvMoveWindow("mainWin", 100, 100);
int
int
int
int

x_cont = 0;
y_cont = 0;
x_total = 0;
y_total = 0;

int
int
int
int

x_v_cont = 0;
y_v_cont = 0;
x_v_total = 0;
y_v_total = 0;

Recorrido de la imagen buscando los puntos de color verdes


(punta Robot) y rojos (pelota):
for(i=0;i<altura;i++) for(j=0;j<anchura;j++) {
//verde oscuro
if ((data[i*anchura_fila+j*canales + 1] > 80) &&
!((data[i*anchura_fila+j*canales + 0] >
data[i*anchura_fila+j*canales + 1]/2) ||
(data[i*anchura_fila+j*canales + 2] >
data[i*anchura_fila+j*canales + 1]/2))){
printf("Punto verde en %d, %d, valor: %dn",j,i,
data[i*anchura_fila+j*canales+2]);
data[i*anchura_fila+j*canales + 0]=255;
data[i*anchura_fila+j*canales + 1]=255;
data[i*anchura_fila+j*canales + 2]=255;
y_v_total = y_v_total + i;
x_v_total = x_v_total + j;
y_v_cont++;
x_v_cont++;
}

//rojo
if ((data[i*anchura_fila+j*canales + 2] > 80) &&
!((data[i*anchura_fila+j*canales + 0] >
data[i*anchura_fila+j*canales + 2]/2) ||
(data[i*anchura_fila+j*canales + 1] >
data[i*anchura_fila+j*canales + 2]/2))){
printf(Punto rojo en %d, %d, valor: %dn,j,i,
data[i*anchura_fila+j*canales+2]);
data[i*anchura_fila+j*canales + 2]=0;
y_total = y_total + i;
x_total = x_total + j;
y_cont++;
x_cont++;
}
}
1 - El doble bucle anidado del que hablamos anteriormente,
necesario para recorrer la imagen (de izquierda a derecha, y
de arriba a abajo).
3 - Accedemos a cada color tal y como coment en la
seccin Qu es una imagen?:. En este caso el verde que est
en el medio ser el + 1. Con este valor umbral de 80 tenemos
suficiente verde, por debajo sera ya demasiado oscuro, y por
encima perderamos pxeles verdes.
4 y 5 - Que los valores de azul y rojo sean claramente
inferiores a los de verde es importante; con que sus valores
no lleguen a la mitad del verde es suficiente. La expresin
booleana completa significa: Si el valor del canal verde es
superior a 80, y el de los canales rojo y azul no supera
ninguno de ellos la mitad del verde, entonces
7 a 9 Pintamos los pxeles de blanco, para que cuando
mostremos la imagen veamos cuales ha detectado.
10 a 13 - Guardamos los datos para el posterior clculo del
punto medio.
17 a 26 Repetimos el proceso con los pxeles rojos.
Clculo del punto medio de los dos objetos, y la distancia
entre ellos:
int x_medio = x_total / x_cont;
int y_medio = y_total / y_cont;

printf(Punto medio rojo en %d, %d, valor: %dn,x_medio,


y_medio, data[i*anchura_fila+j*canales+2]);
int x_v_medio = x_v_total / x_v_cont;
int y_v_medio = y_v_total / y_v_cont;
printf(Punto medio verde en %d, %d, valor: %dn,x_v_medio,
y_v_medio, data[i*anchura_fila+j*canales+1]);
int distancia = sqrt((x_medio x_v_medio)^2 + (y_medio
y_v_medio)^2);
printf(Distancia a la pelota: %d, distancia);

1, 2, 6 y 7 - Clculo de los puntos medios.


11 - Clculo de la distancia entre dos puntos.
Escritura de la distancia en un archivo, mostrar la imagen y
fin del programa:
ofstream fsalida("fichero.txt", ofstream::out);
fsalida << "Distancia: " << distancia;
fsalida.close();
cvShowImage(mainWin, img );
cvWaitKey(0);
cvReleaseImage(&img );
return 0;
}
1 a 3 - As se abre, se escribe, y se cierra un fichero de
texto.

Seguimiento de imagenes
Otra de las aplicaciones muy practicas que podemos crear con
opencv es un sistema de deteccin de movimientos, podremos
por ejemplo usar una webcam para detectar movimiento y hacer
que se una notificacin a nuestro telfono, las aplicaciones

son muchas por lo que en este tutorial nos iniciaremos en la


deteccin de movimientos con opencv.
Utilizaremos el mtodo llamado Differential Images este
consiste en comparar dos imgenes, una la imagen actual
capturada por la webcam y la segunda es la imagen anterior,
si las dos imgenes son idnticas concluimos en que no hubo
movimiento.

Con esto tendremos el siguiente resultado en la captura de la


webcam. La imagen de la derecha muestra el movimiento, cuando
no la haya la imagen estar vaca.

Para terminar intentaremos detectar las coordenadas donde se


ha producido el movimiento que hemos detectado, lo que

haremos ser buscar los contornos, luego calculamos el rea


de los contornos encontrados y nos quedaremos con la mas
grande para mostrar solo un rectngulo y no todos los que
encuentre la funcin.
Con lo que tenemos, el rectngulo que muestra el objeto que
se mueve no es el mejor pero lo iremos trabajando y mejorando
para aplicaciones mas avanzadas.

FUENTES
https://unpocodejava.wordpress.com/2013/10/09/que-es-opencv/
http://acodigo.blogspot.com/
https://es.wikipedia.org/wiki/Segmentaci%C3%B3n_(procesamiento_de_im%C3%A1genes)
http://www.elai.upm.es/webantigua/spain/Asignaturas/Robotica/PracticasROVA/prROVA5Seg
mentacion.pdf
http://alojamientos.us.es/gtocoma/pid/tema4.pdf

You might also like