[Jderobot] Imáges y sus tipos de datos

franciscomiguel.rivas en urjc.es franciscomiguel.rivas en urjc.es
Mie Oct 30 16:01:05 CET 2013


Buenas,

exacto siguiendo los pasos que te dice Edu no tienes que tener ningún  
problema. Una cosa que puedes hacer para optimizar el tiempo de  
adquisición es utilizar parallelIce[1].Reducirá los tiempos de espera  
de tu hilo de control y conseguirás una ejecución mas fluida.  
parallelIce ya te da un cv::Mat por lo que la primera conversión no  
tendrías que hacerla, puedes utilizar opencv directamente para hacer  
los filtros y luego volcar los datos del cv::Mat en el gui utilizando  
los Pixbuf como te ha dicho Edu.



un saludo,
Fran.


[1]http://jderobot.org/Manual-5#parallelIce


"Eduardo Perdices" <eperdices en gsyc.es> escribió:

> Hola,
>
> el tipo IplImage es el tipo antiguo que se utilizaba en opencv,  
> sigueapareciendo en las nuevas versiones pero desaparecerá, hay que  
> utilizar a partir de ahora cv::Mat.
>
> Para pasar de lo recibido por Ice a un cv::Mat hay que hacer esto:
>
> jderobot::ImageDataPtr data = cprx->getImageData();
> colorspaces::Image::FormatPtr fmt =  
> colorspaces::Image::Format::searchFormat(data->description->format);
> colorspaces::Image image(data->description->width,  
> data->description->height,  fmt, &(data->pixelData[0]));
> cv::Mat src=image;
>
> Si luego quieres mostrarla imagen en el Guipuedeshacerlo asídesde  
> uncv::Mat(en GTK):
>
> char* this->imgSrc = new char[IMAGE_WIDTH * IMAGE_HEIGHT * IMAGE_CHANNELS];
> memcpy(this->imgSrc, (char *)src.data, IMAGE_WIDTH * IMAGE_HEIGHT *  
> IMAGE_CHANNELS * sizeof(char));
> Glib::RefPtr<Gdk::Pixbuf> imgBuff =  
> Gdk::Pixbuf::create_from_data((const guint8*)this->imgSrc,
> Gdk::COLORSPACE_RGB,
>                         false,
>                         8,
> src.cols,
> src.rows,
> src.step);
> gtk_image->clear();
> gtk_image->set(imgBuff);
>
> Saludos.
>
> El 30/10/13 15:43, ILDEFONSO GONZALEZ SANCHEZ escribió:
>> Hola,
>>
>> voy a intentar ser mas concreto en la duda :
>>
>> El componente que estoy haciendo en estos momentos, tiene 2 hilos:
>> -El primero (control), se encarga de conectar con ice y guardar los  
>> datos en una clase de memoria compartida, en la que las variables  
>> las estoy declarando como estáticas.
>> -El segundo (Gui), se encarga de recoger esa imagen, del tipo    
>> jderobot::ImageDataPtr, la pasa al tipo colorspaces::Image (con  
>> formato rgb8). Y esta es la que muestro en 4 pantallas distintas,  
>> la intención es aplicar un filtro a 3 de ellas.
>>
>> Entonces lo que intento y no consigo es:
>> -iterar o realizar alguna modificación con funciones sobre le tipo  
>> de dato colorspaces::Image (con formato rgb8):
>>    (Estas funciones las he encontrado en visionlib/colorspaces/image)
>> void toGRAY8(Image& dst) const throw(FormatMismatch);
>>    void toYUY2(Image& dst) const throw(FormatMismatch);
>>    void toHSV8(Image& dst) const throw(FormatMismatch);
>>    void toYCRCB(Image& dst) const throw(FormatMismatch);
>> -O bien pasarla a IplImage (Para el cual si puedo iterar), lo que  
>> no consigo es convertir la imagen en este tipo.
>> -O bien trabajar con el tipo de dato Mat (Que por lo que he visto  
>> es la propia de opencv), que me esta mostrando todo en negro.
>>
>> Entonces las convinaciones posibles que puedo hacer son:
>> -jderobot::ImageDataPtr--->colorspaces::Image--> display OK
>> -jderobot::ImageDataPtr--->colorspaces::Image--->cv::Mat---> KO (en negro)
>>
>>
>> Un saludo y muchas gracias,
>>
>> Ildefonso
>> ------------------------------------------------------------------------
>> *De:* jde-developers-bounces en gsyc.es  
>> [jde-developers-bounces en gsyc.es] en nombre de ILDEFONSO GONZALEZ  
>> SANCHEZ [i.gonzalezsan en alumnos.urjc.es]
>> *Enviado:* miércoles, 30 de octubre de 2013 13:08
>> *Para:* jde-developers
>> *Asunto:* [Jderobot] Imáges y sus tipos de datos
>>
>> Hola buenas tardes,
>>
>> tengo dudas sobre el tipo de datos de los siguientes tipos de imágenes:
>> -jderobot::ImageDataPtr// la que se recibe del plugin de jderobot
>> -colorspaces::Image //Esta la muestro correctamente pero no consigo  
>> iterar sobre ella.
>> -IplImage//He encontrado algoritmos para iterar pero no consigo  
>> pasar la imagen a este formato.
>> -cv::Mat //cuando paso la imagen a este formato y la muestro  
>> aparece negra con puntos blancos.
>>
>> Me gustaría tener claro para que sirve cada una, que campos  
>> contienen para poder iterar sobre ellas y como podría cambiar el  
>> formato de unas a otras.
>>
>> Gracias y un saludo,
>>
>> Ildefonso González Sánchez
>>
>>
>>
>> _______________________________________________
>> Jde-developers mailing list
>> Jde-developers en gsyc.es
>> http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers
>
>



------------------------------------------------------------------
Laboratorio de Análisis del Movimiento, Biomecánica, Ergonomía y  
Control Motor (LAMBECOM).
Departamento de Fisioterapia, Terapia Ocupacional, Rehabilitación y  
Medicina Física.
Universidad Rey Juan Carlos (URJC).


More information about the Jde-developers mailing list