Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Yo quera que mi robot sea capaz de realizar un seguimiento de objetos y seguirlos. Lo primero que quera hacer
es darle al robot la capacidad de seguir un objeto con su cmara de cabeza. La cmara de cabeza se monta en un
sistema de servo pan-tilt, y por lo tanto es capaz de moverse a la izquierda y derecha, arriba y abajo (como se ve
en la imagen siguiente).
Mi segundo objetivo el seguimiento de objetos era hacer que el robot de persecucin despus de un objeto, como
un perro persegua una pelota lanzada por su dueo. Este tipo de seguimiento es bastante ms difcil - que usara
la cmara seguimiento de cabeza de la etapa anterior, y combinarlo con el descanso de los sensores del robot para
seguir el objeto.
Cmo?
Para lograr que voy a usar varios algoritmos de procesamiento de imgenes \ bsicos de visin por ordenador. Voy
a utilizar el OpenCV biblioteca. OpenCV, como su nombre lo indica, es una biblioteca de visin por ordenador de
cdigo abierto originalmente
El primer objeto que quera realizar un seguimiento era una bola de color naranja claro.
Filtrar slo el color naranja de la imagen. Para hacer eso, convert la imagen al espacio de color HSV , y luego se
usa el filtro cvInRange dos veces para filtrar los colores naranja.
En la primera foto de abajo se puede ver el vdeo convertido vapor al espacio de color HSV, y en la segunda foto se
puede ver el resultado del filtrado de color rojo (todos los colores excepto el rojo se separaron por filtracin).
(Cdigo de Python)
01 </p>
diecisis <p>
1 </p>
5 <p>
El resultado
El resultado es bastante impresionante. Las funciones de cdigo muy bien y detecta la bola bajo la mayora de
circunstancias (es decir, la pelota est lejos de la cmara, cerca de la cmara, el movimiento lento, movimiento
rpido, etc).
003 * Name : Fast object tracking using the OpenCV library *<br />
005 * Notice : Copyright (c) Jun 2010, Lior Chen, All Rights Reserved *<br />
011 * Notes : By default this code will open the first connected camera. *<br />
014 * : Also, the code is currently configured to tracking RED objects. *<br />
015 * : This can be changed by changing the hsv_min and hsv_max vectors *<br />
017 * License : This program is free software: you can redistribute it and/or modify *<br />
018 * : it under the terms of the GNU General Public License as published by *<br />
019 * : the Free Software Foundation, either version 3 of the License, or *<br />
022 * : This program is distributed in the hope that it will be useful, *<br />
023 * : but WITHOUT ANY WARRANTY; without even the implied warranty of *<br />
024 * : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *<br />
025 * : GNU General Public License for more details. *<br />
027 * : You should have received a copy of the GNU General Public License *<br />
028 * : along with this program. If not, see <http://www.gnu.org/licenses/> *<br />
042 globals size, hsv_frame, thresholded, thresholded2, hsv_min, hsv_max, hsv_min2, hsv_max2, capture<br />
057 sys.exit(1)</p>
062 t.start()</p>
064 globals size, hsv_frame, thresholded, thresholded2, hsv_min, hsv_max, hsv_min2, hsv_max2, capture<br />
065 while 1:<br />
070 # as hue wraps around, we need to match it in 2 parts and OR together<br />
077 circles = cvHoughCircles(thresholded, storage, CV_HOUGH_GRADIENT, 2, thresholded.height/4, 100, 40, 20, 200)</p>
089 y = circle[1]</p>
092 print "ball detected at position:",x, ",", y, " with radius:", maxRadius</p>
Este cdigo C ++ toma una secuencia de vdeo desde una cmara de vdeo conectada, busca una pelota naranja
dentro de la corriente, e imprime las coordenadas de la pelota.
Tres ventanas depuracin se muestran para aclarar el proceso: 1) la captura de vdeo. 2) la corriente despus de
la conversin a HSV, 3) la corriente despus de la conversin a HSV, color de filtrado, y transformada de Hough.
003 * Name : Fast object tracking using the OpenCV library *<br />
005 * Notice : Copyright (c) Jun 2010, Lior Chen, All Rights Reserved *<br />
011 * Notes : By default this code will open the first connected camera. *<br />
015 * : This can be changed by changing the hsv_min and hsv_max vectors *<br />
017 * License : This program is free software: you can redistribute it and/or modify *<br />
018 * : it under the terms of the GNU General Public License as published by *<br />
019 * : the Free Software Foundation, either version 3 of the License, or *<br />
022 * : This program is distributed in the hope that it will be useful, *<br />
023 * : but WITHOUT ANY WARRANTY; without even the implied warranty of *<br />
024 * : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *<br />
025 * : GNU General Public License for more details. *<br />
027 * : You should have received a copy of the GNU General Public License *<br />
028 * : along with this program. If not, see <http://www.gnu.org/licenses/> *<br />
029 ******************************************************************************************/</p>
044 {</p>
054 }</p>
055 <p> // Create a window in which the captured images will be presented<br />
073 }</p>
074 <p> // Covert color space to HSV as it is much easier to filter colors in the HSV color-space.<br />
080 // hough detector works better with some smoothing of the image<br />
092 }</p>
093 <p> cvShowImage( "Camera", frame ); // Original stream with detected ball overlay<br />
094 cvShowImage( "HSV", hsv_frame); // Original stream in the HSV color space<br />
095 cvShowImage( "After Color Filtering", thresholded ); // The stream after color filtering</p>
098 <p> //If ESC key pressed, Key=0x10001B under OpenCV 0.9.7(linux version),<br />
triveni dice:
Hey Lior,
encontr realmente su trabajo til :-)
Necesito un poco de ayuda de un amigo suyo,
En realidad no estoy utilizando el movement..instead servo desea utilizar un robot mvil Lior..so Creo que habr b
algunos cambios en el cdigo .so, nos podra ayudar en darme una breve idea de cules sern los cambios ..
O lo que mi supone que debemos hacer?
Agradeciendo de antemano Lior ..
alextingdice:
Dinesh Gosavidice:
Hey,
muy buen trabajo!
Me hace referencia el cdigo anterior para realizar un seguimiento de objetos de color rojo,
pero ahora tengo que seguir un objeto del color NEGRO,
Entonces, cmo debo proceder?
Debera convertir la imagen a HSV primero y luego filtrar el color (no estoy seguro de los valores de color HSV de
BLCK ... ??)
O hay alguna otra manera ....
su respuesta ser de gran ayuda para m ...
agradeciendo de avanzada !!
Jaka dice:
Buen trabajo all! Estoy trabajando en proyectos similares y slo tengo una pregunta con respecto a la cmara. Yo
uso la cmara web USB normal, y es bastante lento para aplicaciones en tiempo real. Si el rayo no es bueno los fps
son an ms bajas.
Me gustara saber cuntos cuadros por segundo se puede conseguir con la cmara, cul es la mejor opcin, la
leva con salida Ethernet o salida de vdeo simple, cul te sugiere? Creo que la velocidad de fps de la cmara USB
en comparacin con cualquier otra es notablemente inferior, estoy en lo cierto? Gracias de antemano
BALAKRISHNAdice:
se puede proporcionar informacin acerca de cmo interfaz del motor stpper, motor de corriente continua, con
sensor de BeagleBoard
Alirezadice:
falkonindice:
Arijit dice:
Estoy utilizando DevC ++, OpenCV 2.1, Windows 7 y despus de ejecutar el programa que est mostrando
OpenCV de error: tamao del argumento de entrada coincide con donot () en cvCvtcolor, archivo C: \ Usuario \
Vp \ OCV \ src \ cv \ cvcolor.cpp, lnea 2212
Este programa ha solicitado el tiempo de ejecucin de darlo por terminado de una manera inusual.
por favor ayuda que se requiere para el poder infinito ..: '(
prohibicindice:
Debanjandice:
hola, cmo podemos incluir la librera OpenCV? he descargado la biblioteca OpenCV de la pgina web y luego se
coloca en la carpeta que contiene el OpenCV highgui.h cvaux.h y otros archivos en la misma carpeta que el cdigo
anterior, pero cuando intento compilar que arroja un error que dice OpenCV / cvaux. h: No existe el fichero o
directorio.Por favor ayuda..
Suchetdice:
Endahdice:
hi ..
i estoy haciendo mi proyecto final de la misma manera como este.
Estoy usando Visual Studio 2008
, pero no tengo ni idea de cmo tener acceso a puerto serial de comunicacin
tal vez usted me puede dar solucin.
Gracias
Nick dice:
Pedro dice:
Se puede hacer esto en el espacio de color RGB tambin. Estoy haciendo el reconocimiento de formas (bola) por
mi parte en el proyecto de equipo para un robot guiado visualmente. Cualquier ayuda sera grande.
Gracias
Pete
Pedro dice:
Se puede hacer esto, pero en el espacio de color RGB? Quiero hacer esto en lenguaje C para un proyecto del robot
base del equipo aqu en la Universidad ... Cualquier ayuda sera grande!
Aclamaciones
Pete
ti7aaa dice:
heyy mi mente va a estallar: D ,,,, i quera preguntar {CvCapture * = captura cvCaptureFromCAM (0);
if (! captura)
}
cmo un puntero es tratado como un tipo entero o algo por el estilo ,,,,, si u hizo int x ,,,,, int * y ,,,,,, entonces y = x
y luego ,,,,,, i cant tomar y como y = ,,,,,,, y como un puntero de un tipo que funcione puntos ,,,, seguro de que es
algo conmigo porque me encontr el cdigo ,,,,, as que deseen cualquier libro de texto o tutorial explica esto
gracias ,,,,, ,,,,,
Inprimusdice:
Gracias tanto por este pequeo tutorial. En realidad estoy haciendo algo similar a este proyecto aunque no he
interconectado con mi servos an. Quiero simplemente (y rpidamente) detectar el movimiento y luego disparar
un evento que inicia el seguimiento de la trama siguiente. Ser absDiff-cin entre dos tramas ser suficiente para
lograr esto o tengo que cavar ms profundo?
Gracias
Kai dice:
Kai dice:
Cuando ejecuto la fuente de C ++, me sale un error. Alguien sabe cmo solucionarlo ??? Por favor ayuda
Kai dice:
Royy dice:
Hola Lior, Cmo le fue el video que has subido a youtube? usaste OpenCV o cualquier otro programa?
si utiliz OpenCV Cmo lo hiciste ??
Trato de hacerlo, pero los colores cambian en el vdeo grabado, toda la escena es una especie de azul, los colores
originales se pierden.
muchas gracias
Nikhil dice:
Shawndice:
Hola ... gracias por compartir su cdigo. Esto es muy til. Tengo algunas preguntas:
Si mi bola es otro color, se hsv_min y hsv_max los nicos dos valores que tengo que cambiar? Y si es as, puedo
conseguirlos directamente de aplicacin kcolorchooser o hay ninguna conversin involucrados?
Vik dice:
http://uowteaminvincible.wordpress.com/2010/01/09/getting-started-with-opencv-in-microsoft-visual-studio-
2008-in-windows-vista/
Ross dice:
Gracias .have probar este programa en Visual Studio 2008? Cuando construyo l, hay varias seales de advertencia
para cvvidsurv.hpp y string.h, y no poda correr correctly.If cualquier persona se encuentra con el mismo
problema, por favor, comparta la solucin, gracias.
Alin dice:
BNC dice:
Gracias
Swatz dice:
Doli dice:
Hai,
Rizwandice:
Kai dice:
Rizwandice:
2 diciembre 2010 a las 16:52
Hola !
Slo trat cdigo ur pero es accidentes y mostrar un error de excepcin
que se depura. El problema es que en estos estados
cvCvtColor (marco, hsv_frame, CV_BGR2HSV);
cvInRangeS (hsv_frame, hsv_min, hsv_max, thresholded);
Mox dice:
He estado buscando una solucin simple para el seguimiento de una sola bola durante tres semanas. Usted es la
primera persona que encontr que no slo est dispuesto a compartir su cdigo fuente, sino que tambin lo hace
de una manera muy organizada y fcil de seguir. Esto ayuda a una tonelada. Bien hecho y buena suerte con
cualquier otra cosa que est trabajando. Mantener el intercambio, es lo que le hace ms impresionante que la
gente que no lo hacen !!
Un milln de gracias.
Morpheusdice:
Muchas gracias por el cdigo fuente! Estoy escribiendo proyecto en la Universidad Tecnolgica de Gdansk y he
buscado por esto!
Excelente trabajo!
Andi dice:
pero quiero preguntar acerca de kcolorchooser que utiliz para escoger un color rojo que ,,, (kcolorchooser)
funciona en Linux o puede trabajar en las ventanas?
quiero cambiar el color pero no s cmo. causa en las ventanas i acaba de encontrar RGB y HSL. Y cmo s que el
HSV en OpenCV (i utilizar OpenCV) para cambiar el color? Gracias
behzaddice:
19 de noviembre 2010 a las 13:06
SAgirl :)dice:
Amit dice:
RoboGraphicadice:
Gracias por compartir su trabajo Lior, que me habra ahorrado algn tiempo escribiendo esto desde cero y es
genial como constructor tutorial / habilidad. Los buenos comentarios y buen flujo lgico del cdigo.
hSaif dice:
Buen trabajo.
Saludos.
joshu dice:
Tengo slo una pregunta: cmo elegir los valores para la coincidencia de colores min / max hsv? Es decir, no son
valores RGB o HSV, verdad?
Lior Chendice:
Son valores HSV. Los he elegido el camino ms fcil - Me exhibidas el baln en la pantalla, y se utiliza otra
aplicacin - kcolorchooser, que me muestre el valor del color bajo el puntero del ratn. Despus de algunos
experimentos que encontr los rangos que funcionaron mejor. Estos valores son muy dependientes tanto de la
calidad y el tipo de la cmara que est utilizando y las condiciones de iluminacin.
NIKHILdice:
Voelkerdice:
La cmara parece inalmbrica, por lo que se realiza la deteccin de la bola en un PC distante? hacer casi el mismo
en el BeagleBoard (OpenCV en la BeagleBoard) I'am, y la velocidad de fotogramas max i obtener para un marco de
640 480 usando la misma tcnica de deteccin es de alrededor de 2-3FPS. En 320 250 marcos, i puede alcanzar
hasta 8 fps. Esta tcnica de trabajo de deteccin de bola grande en superficie homognea, pero usando en la
condicin real, con diferentes condiciones de luz no dar mismos resultados. La tcnica de proyeccin hacia atrs
(como en los ejemplos OPENCV) parece dar mejores resultados.
Lior Chendice:
bebatechdice:
tcmichalsdice:
Sera bueno saber el tipo y el cable ... yo iba a utilizar un cable de cinta plana, pero el suyo se ve muy bien !!!
Lior Chendice:
Lior Chendice:
Como quera la mayor parte del procesamiento de imgenes que se realizan en el PC y no en la placa de Linux
embebido en el robot, he optado por utilizar una cmara inalmbrica. Es muy similar a la encontrada en este
enlace:http://www.spycamera4u.com . Es ligero, compacto, tiene un bastante bien calidad y una gama decente
(20m por lo menos).
Andre (ddois)dice: