[Jderobot] Imáges y sus tipos de datos

Eduardo Perdices eperdices en gsyc.es
Mie Oct 30 15:50:54 CET 2013


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

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://gsyc.escet.urjc.es/pipermail/jde-developers/attachments/20131030/45f188b3/attachment-0001.htm 


More information about the Jde-developers mailing list