Está en la página 1de 21

Seguimiento de objetos rpido - Robot de Visin por Computador

Etiquetas: BeagleBoard , Visin por Computador , Procesamiento de Imgenes

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

desarrollado por Intel. Es multiplataforma (lo he utilizado tanto en un PC y en el brazo


basado BeagleBoard ). OpenCV es bastante fcil de usar si usted tiene conocimientos bsicos de procesamiento de
imgenes.

El primer objeto que quera realizar un seguimiento era una bola de color naranja claro.

seguimiento basado en el color

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>

02 <p>#declare necessary objects</p>

03 <p>hsv_frame = cvCreateImage(size, IPL_DEPTH_8U, 3)<br />

04 thresholded = cvCreateImage(size, IPL_DEPTH_8U, 1)<br />

05 thresholded2 = cvCreateImage(size, IPL_DEPTH_8U, 1)<br />

06 hsv_min = cvScalar(0, 50, 170, 0)<br />

07 hsv_max = cvScalar(10, 180, 256, 0)<br />

08 hsv_min2 = cvScalar(170, 50, 170, 0)<br />

09 hsv_max2 = cvScalar(256, 180, 256, 0)</p>

10 <p># convert to HSV for color matching<br />

11 # as hue wraps around, we need to match it in 2 parts and OR together<br />

12 cvCvtColor(frame, hsv_frame, CV_BGR2HSV)<br />

13 cvInRangeS(hsv_frame, hsv_min, hsv_max, thresholded)<br />

14 cvInRangeS(hsv_frame, hsv_min2, hsv_max2, thresholded2)<br />

15 cvOr(thresholded, thresholded2, thresholded)</p>

diecisis <p>

Forma de seguimiento basado


Entonces, he utilizado transformada de Hough para detectar la forma de un crculo. Antes de aplicar la
transformada de Hough Alis la imagen, ya que parece mejorar los resultados.

1 </p>

2 <p># pre-smoothing improves Hough detector<br />

3 cvSmooth(thresholded, thresholded, CV_GAUSSIAN, 9, 9)<br />

4 circles = cvHoughCircles(thresholded, storage, CV_HOUGH_GRADIENT, 2, thresholded.height/4, 100, 40, 20, 200)</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).

Puede ver el resultado en este video:

fuentes pitn completos incluyendo el movimiento del servo

001 <br />

002 /*****************************************************************************************<br />

003 * Name : Fast object tracking using the OpenCV library *<br />

004 * Author : Lior Chen &lt;chen.lior@gmail.com&gt; *<br />

005 * Notice : Copyright (c) Jun 2010, Lior Chen, All Rights Reserved *<br />

006 * : *<br />


007 * Site : http://www.lirtex.com *<br />

008 * WebPage : http://www.lirtex.com/robotics/fast-object-tracking-robot-computer-vision *<br />

009 * : *<br />

010 * Version : 1.0 *<br />

011 * Notes : By default this code will open the first connected camera. *<br />

012 * : In order to change to another camera, change *<br />

013 * : CvCapture* capture = cvCaptureFromCAM( 0 ); to 1,2,3, etc. *<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 />

016 * : *<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 />

020 * : (at your option) any later version. *<br />

021 * : *<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 />

026 * : *<br />

027 * : You should have received a copy of the GNU General Public License *<br />

028 * : along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt; *<br />

029 ******************************************************************************************/<br />

030 #!/usr/bin/python<br />

031 # -*- coding: utf-8 -*-</p>

032 <p>from opencv.cv import *<br />

033 from opencv.highgui import *<br />

034 from threading import Thread<br />

035 #import serial</p>


036 <p>class RobotVision:<br />

037 cvSize size<br />

038 cvImage hsv_frame, thresholded, thresholded2<br />

039 cvScalar hsv_min, hsv_max, hsv_min2, hsv_max2<br />

040 cvCapture capture;</p>

041 <p> def InitBallTracking():<br />

042 globals size, hsv_frame, thresholded, thresholded2, hsv_min, hsv_max, hsv_min2, hsv_max2, capture<br />

043 print &quot;Initializing ball Tracking&quot;<br />

044 size = cvSize(640, 480)<br />

045 hsv_frame = cvCreateImage(size, IPL_DEPTH_8U, 3)<br />

046 thresholded = cvCreateImage(size, IPL_DEPTH_8U, 1)<br />

047 thresholded2 = cvCreateImage(size, IPL_DEPTH_8U, 1)</p>

048 <p> hsv_min = cvScalar(0, 50, 170, 0)<br />

049 hsv_max = cvScalar(10, 180, 256, 0)<br />

050 hsv_min2 = cvScalar(170, 50, 170, 0)<br />

051 hsv_max2 = cvScalar(256, 180, 256, 0)</p>

052 <p> storage = cvCreateMemStorage(0)</p>

053 <p> # start capturing form webcam<br />

054 capture = cvCreateCameraCapture(-1)</p>

055 <p> if not capture:<br />

056 print &quot;Could not open webcam&quot;<br />

057 sys.exit(1)</p>

058 <p> #CV windows<br />

059 cvNamedWindow( &quot;Camera&quot;, CV_WINDOW_AUTOSIZE );</p>

060 <p> def TrackBall(i):<br />

061 t = Thread(target=TrackBallThread, args=(i,))<br />

062 t.start()</p>

063 <p> def TrackBallThread(num_of_balls):<br />

064 globals size, hsv_frame, thresholded, thresholded2, hsv_min, hsv_max, hsv_min2, hsv_max2, capture<br />
065 while 1:<br />

066 # get a frame from the webcam<br />

067 frame = cvQueryFrame(capture)</p>

068 <p> if frame is not None:</p>

069 <p> # convert to HSV for color matching<br />

070 # as hue wraps around, we need to match it in 2 parts and OR together<br />

071 cvCvtColor(frame, hsv_frame, CV_BGR2HSV)<br />

072 cvInRangeS(hsv_frame, hsv_min, hsv_max, thresholded)<br />

073 cvInRangeS(hsv_frame, hsv_min2, hsv_max2, thresholded2)<br />

074 cvOr(thresholded, thresholded2, thresholded)</p>

075 <p> # pre-smoothing improves Hough detector<br />

076 cvSmooth(thresholded, thresholded, CV_GAUSSIAN, 9, 9)<br />

077 circles = cvHoughCircles(thresholded, storage, CV_HOUGH_GRADIENT, 2, thresholded.height/4, 100, 40, 20, 200)</p>

078 <p> # find largest circle<br />

079 maxRadius = 0<br />

080 x = 0<br />

081 y = 0<br />

082 found = False<br />

083 for i in range(circles.total):<br />

084 circle = circles[i]<br />

085 if circle[2] &gt; maxRadius:<br />

086 found = True<br />

087 maxRadius = circle[2]<br />

088 x = circle[0]<br />

089 y = circle[1]</p>

090 <p> cvShowImage( &quot;Camera&quot;, frame );</p>

091 <p> if found:<br />

092 print &quot;ball detected at position:&quot;,x, &quot;,&quot;, y, &quot; with radius:&quot;, maxRadius</p>

093 <p> if x &gt; 420:<br />


094 # need to pan right<br />

095 servoPos += 5<br />

096 servoPos = min(140, servoPos)<br />

097 servo(2, servoPos)<br />

098 elif x &lt; 220:<br />

099 servoPos -= 5<br />

100 servoPos = max(40, servoPos)<br />

101 servo(2, servoPos)<br />

102 print &quot;servo position:&quot;, servoPos<br />

103 else:<br />

104 print &quot;no ball&quot;<br />


Fuentes de muestra

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.

001 <br />

002 /*****************************************************************************************<br />

003 * Name : Fast object tracking using the OpenCV library *<br />

004 * Author : Lior Chen &lt;chen.lior@gmail.com&gt; *<br />

005 * Notice : Copyright (c) Jun 2010, Lior Chen, All Rights Reserved *<br />

006 * : *<br />

007 * Site : http://www.lirtex.com *<br />

008 * WebPage : http://www.lirtex.com/robotics/fast-object-tracking-robot-computer-vision *<br />

009 * : *<br />

010 * Version : 1.0 *<br />

011 * Notes : By default this code will open the first connected camera. *<br />

012 * : In order to change to another camera, change *<br />

013 * : CvCapture* capture = cvCaptureFromCAM( 0 ); to 1,2,3, etc. *<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 />

016 * : *<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 />

020 * : (at your option) any later version. *<br />

021 * : *<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 />

026 * : *<br />

027 * : You should have received a copy of the GNU General Public License *<br />

028 * : along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt; *<br />

029 ******************************************************************************************/</p>

030 <p>#include &lt;opencv/cvaux.h&gt;<br />

031 #include &lt;opencv/highgui.h&gt;<br />

032 #include &lt;opencv/cxcore.h&gt;<br />

033 #include &lt;stdio.h&gt;</p>

034 <p>#include &lt;stdio.h&gt;<br />

035 #include &lt;stdlib.h&gt;<br />

036 #include &lt;string.h&gt;<br />

037 #include &lt;assert.h&gt;<br />

038 #include &lt;math.h&gt;<br />

039 #include &lt;float.h&gt;<br />

040 #include &lt;limits.h&gt;<br />

041 #include &lt;time.h&gt;<br />

042 #include &lt;ctype.h&gt;</p>


043 <p>int main(int argc, char* argv[])<br />

044 {</p>

045 <p> // Default capture size - 640x480<br />

046 CvSize size = cvSize(640,480);</p>

047 <p> // Open capture device. 0 is /dev/video0, 1 is /dev/video1, etc.<br />

048 CvCapture* capture = cvCaptureFromCAM( 0 );<br />

049 if( !capture )<br />

050 {<br />

051 fprintf( stderr, &quot;ERROR: capture is NULL \n&quot; );<br />

052 getchar();<br />

053 return -1;<br />

054 }</p>

055 <p> // Create a window in which the captured images will be presented<br />

056 cvNamedWindow( &quot;Camera&quot;, CV_WINDOW_AUTOSIZE );<br />

057 cvNamedWindow( &quot;HSV&quot;, CV_WINDOW_AUTOSIZE );<br />

058 cvNamedWindow( &quot;EdgeDetection&quot;, CV_WINDOW_AUTOSIZE );</p>

059 <p> // Detect a red ball<br />

060 CvScalar hsv_min = cvScalar(150, 84, 130, 0);<br />

061 CvScalar hsv_max = cvScalar(358, 256, 255, 0);</p>

062 <p> IplImage * hsv_frame = cvCreateImage(size, IPL_DEPTH_8U, 3);<br />

063 IplImage* thresholded = cvCreateImage(size, IPL_DEPTH_8U, 1);</p>

064 <p> while( 1 )<br />

065 {<br />

066 // Get one frame<br />

067 IplImage* frame = cvQueryFrame( capture );<br />

068 if( !frame )<br />

069 {<br />

070 fprintf( stderr, &quot;ERROR: frame is null...\n&quot; );<br />

071 getchar();<br />


072 break;<br />

073 }</p>

074 <p> // Covert color space to HSV as it is much easier to filter colors in the HSV color-space.<br />

075 cvCvtColor(frame, hsv_frame, CV_BGR2HSV);<br />

076 // Filter out colors which are out of range.<br />

077 cvInRangeS(hsv_frame, hsv_min, hsv_max, thresholded);</p>

078 <p> // Memory for hough circles<br />

079 CvMemStorage* storage = cvCreateMemStorage(0);<br />

080 // hough detector works better with some smoothing of the image<br />

081 cvSmooth( thresholded, thresholded, CV_GAUSSIAN, 9, 9 );<br />

082 CvSeq* circles = cvHoughCircles(thresholded, storage, CV_HOUGH_GRADIENT, 2,<br />

083 thresholded-&gt;height/4, 100, 50, 10, 400);</p>

084 <p> for (int i = 0; i &lt; circles-&gt;total; i++)<br />

085 {<br />

086 float* p = (float*)cvGetSeqElem( circles, i );<br />

087 printf(&quot;Ball! x=%f y=%f r=%f\n\r&quot;,p[0],p[1],p[2] );<br />

088 cvCircle( frame, cvPoint(cvRound(p[0]),cvRound(p[1])),<br />

089 3, CV_RGB(0,255,0), -1, 8, 0 );<br />

090 cvCircle( frame, cvPoint(cvRound(p[0]),cvRound(p[1])),<br />

091 cvRound(p[2]), CV_RGB(255,0,0), 3, 8, 0 );<br />

092 }</p>

093 <p> cvShowImage( &quot;Camera&quot;, frame ); // Original stream with detected ball overlay<br />

094 cvShowImage( &quot;HSV&quot;, hsv_frame); // Original stream in the HSV color space<br />

095 cvShowImage( &quot;After Color Filtering&quot;, thresholded ); // The stream after color filtering</p>

096 <p> cvReleaseMemStorage(&amp;storage);</p>

097 <p> // Do not release the frame!</p>

098 <p> //If ESC key pressed, Key=0x10001B under OpenCV 0.9.7(linux version),<br />

099 //remove higher bits using AND operator<br />

100 if( (cvWaitKey(10) &amp; 255) == 27 ) break;<br />


101 }</p>

102 <p> // Release the capture device housekeeping<br />

103 cvReleaseCapture( &amp;capture );<br />

104 cvDestroyWindow( &quot;mywindow&quot; );<br />

105 return 0;<br />

106 }<br />


Suscrbase ahora a travs de RSS antes de que salgan un post!

Publicado en Robtica por Codex 51 Comentarios

51 Respuestas a "Seguimiento de objetos rpido - Robot Computer Vision"

triveni dice:

21 de julio 2011 a las 19:07

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:

21 de julio 2011 a las 4:01

Hey, que fue un gran proyecto hecho hasta ahora.


Por cierto, estoy trabajando en un proyecto similar con el concepto similar. Posible compartir todo el proyecto
conmigo con los detalles sobre el hardware y el software utilizado?
Su ayuda y consejos sern de gran ayuda para m.
Muchas gracias!!

Dinesh Gosavidice:

13 de julio 2011 a 12:44

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:

21 de junio 2011 a las 11:53

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:

18 de junio 2011 a las 8:55

se puede proporcionar informacin acerca de cmo interfaz del motor stpper, motor de corriente continua, con
sensor de BeagleBoard

Alirezadice:

6 junio 2011 a las 7:58

mucho por el cdigo de Gracias.

falkonindice:

2 de junio 2011 a 11:30

Necesita ayuda con el ahorro de este video ???

Arijit dice:

20 de mayo de 2011 a las 08:18

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:

30 de abril 2011 a las 12:14

Muchas gracias por compartir su cdigo, el deseo u mor xito

Debanjandice:

17 de abril 2011 a las 11:15

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:

14 de abril 2011 a 14:54

Gracias por el cdigo fuente tutorial y usted.


Este tutorial me dan una gran cantidad de conocimientos para mi proyecto.

Endahdice:

9 abril 2011 a las 17:05

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:

23 de marzo 2011 a las 11:44


Gracias por compartir la program.but cuando te han compilado la versin C ++ del programa en Ubuntu 10.10
usando OpenCV2.1 no puedo ver nada en el borde window.It deteccin es totalmente negro ... Debido a que
consigo con varios crculos en las pantallas ... por favor ayuda .

Pedro dice:

22 de marzo 2011 a las 17:46

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:

22 de marzo 2011 a las 17:41

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:

20 de marzo 2011 a 14:23

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:

18 de marzo 2011 a las 19:21

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:

17 de marzo 2011 a las 2:47

finalmente se ha resuelto el problema.

Kai dice:

16 de marzo 2011 a las 10:26

Cuando ejecuto la fuente de C ++, me sale un error. Alguien sabe cmo solucionarlo ??? Por favor ayuda

Kai dice:

11 de marzo 2011 a 10:16

Tratando de ejecutar el C ++ en Visual Studio 2008, pero fracasa.

Royy dice:

11 de marzo 2011 a 07:09

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:

4 marzo 2011 a las 21:29

Puedo ver cualquier cosa en la ventana de deteccin de bordes.


Estoy utilizando Windows XP, Visual C ++ 2008, OpenCV 2.1.
Por favor ayuda. lo antes posible

Rafi ... dice:

28 de febrero 2011 a las 09:07


i implementado deteccin de carriles usando transformada de Hough para una imagen usando C ++

Ahora quiero poner en prctica a travs de una vdeo ...

si tienes el cdigo PLZ ... enviar a mi identificacin ...

Gracias de antemano ...

Shawndice:

16 de febrero 2011 a las 10:04

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:

16 de febrero 2011 a las 09:46

Siga estas instrucciones sobre cmo ejecutar OpenCV en VS2008

http://uowteaminvincible.wordpress.com/2010/01/09/getting-started-with-opencv-in-microsoft-visual-studio-
2008-in-windows-vista/

Ross dice:

5 febrero 2011 a las 06:17

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:

20 enero 2011 a las doce y cincuenta y tres

Eso no es ni siquiera el cdigo Python vlido ...

def InitBallTracking ():


tamao globales

su InitBallTracking def (auto):


self.size = pitn vlida

y usted no declarar el tipo de variable en Python como el tamao cvSize ...


No me malinterpreten, pero si quieres de cdigo postal pitn al menos intenta ejecutar primero ...

BNC dice:

18 de enero de 2011 a 15:43

No entiende valor en hsv_min funcin lo que es de color


CvScalar hsv_min = cvScalar (150, 84, 130, 0);
CvScalar hsv_max = cvScalar (358, 256, 255, 0);

I entiende es cvScalar (b, g, r, 0);


pero la forma de establecer y hsv_min hsv_max cul es el valor?
quiero coincidencia de color amarillo o orther?

Gracias

Swatz dice:

10 enero 2011 a las 03:27

Gracias por el cdigo

Doli dice:

3 enero 2011 a las 14:31

Hai,

Cmo si quiero realizar un seguimiento de mltiples objetos (pelotas)?

Rizwandice:

2 diciembre 2010 a las 19:47

En realidad ahora lo tengo


Esto fue debido a mis tamaos de las imgenes no eran iguales
que ahora los hice todos ellos Igual que el tamao de trama de entrada
Gracias por Cdigo

Kai dice:

16 de marzo 2011 a las 10:55

Me podra decir cmo resolver ese error?

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);

todo lo dems es perfecto


, pero cuando me incluyo una o ambas de estas declaraciones me da error
puedo averiguar cul es el problema

Mox dice:

1 diciembre 2010 a las 03:09

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:

27 de noviembre 2010 a las 18:23

Muchas gracias por el cdigo fuente! Estoy escribiendo proyecto en la Universidad Tecnolgica de Gdansk y he
buscado por esto!

Excelente trabajo!

Andi dice:

21 de noviembre 2010 a las 13:35

Hola ,,, he hecho su cdigo, gracias por compartir ...

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

Muchas gracias por compartir

SAgirl :)dice:

20 octubre 2010 a las 04:41

Realmente aprecio que compartir su trabajo con nosotros, Gracias

Amit dice:

17 de octubre 2010 a las 20:27

que quera seguir el movimiento de varios objetos de colores y su movimiento ......


u puede ayudar ???

RoboGraphicadice:

14 octubre 2010 a las doce y media

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:

6 octubre 2010 a las 10:35

Buen trabajo.

Prob su cdigo fuente, pero no haba mucho ruido en la imagen binaria !!


hay ninguna restriccin a la iluminacin ambiente o hardware de la cmara?

Saludos.

joshu dice:

26 de septiembre 2010 a las 18:37

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?

Estoy hablando de los siguientes:


CvScalar hsv_min = cvScalar (150, 84, 130, 0);
CvScalar hsv_max = cvScalar (358, 256, 255, 0);
Adems, he probado el cdigo C ++ y parecen ser ms tiles para el reconocimiento de los labios (rosa) que para
el seguimiento de una bola roja.

Gracias por compartir!

Lior Chendice:

28 de septiembre 2010 a las 15:46

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:

25 de septiembre 2010 a las 21:01

Gran trabajo ...


Gracias por el programa ...

Voelkerdice:

22 de septiembre 2010 a las 10:57

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:

28 de septiembre 2010 a las 15:42

S, yo de hecho para realizar la deteccin de peligro en un PC remoto. He intentado hacerlo en el BeagleBoard,


pero los resultados no fueron lo suficientemente satisfactorio (frame-rate bajo como usted ha dicho). Adems de
la deteccin de la bola tengo la intencin de utilizar la cara de deteccin de OpenCV para reconocer a las
personas, y por otra parte hay de reconocimiento de voz y software de voz-sntesis se ejecuta en el BeagleBoard,
que parece ms que suficiente.
Voy a probar la tcnica de retroproyeccin, gracias por compartir!


bebatechdice:

21 de septiembre 2010 a las 08:25

Muy bien, gracias por compartir.

Puede compartir con nosotros algunos detalles sobre la cmara de vdeo?

tcmichalsdice:

21 de septiembre 2010 a las 21:59

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:

28 de septiembre 2010 a las 15:49

A lo que el cable se refiere?

Lior Chendice:

28 de septiembre 2010 a las 15:36

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:

18 de septiembre 2010 a las 05:42

impresionante, gracias a compartir =)

También podría gustarte