[Jderobot] [Jderobot-dev] Duda sobre CameraServer y el modo de servir imágenes
Alberto Martin
almartinflorido en gmail.com
Lun Jul 22 17:28:02 CEST 2013
Hola de nuevo,
yo no sé mucho de opencv, pero bueno ahí va:
La codificación de bits fue lo primero que descarte, entiendo que si soy
capaz de ver la imagen de la cámara vertical aunque debajo de ella queden
los restos de la imagen que mostraba con anterioridad, la codificación de
bits es la correcta. Además mirando las especificaciones ArDrone no indican
un formato distinto para la imagen vertical, es más utilizan lo que se
denomina PiP (Picture in Picture), por lo que en este punto tomo mucha
fuerza la idea de Oscar.
Siguiendo con lo propuesto por Oscar cree una imagen auxiliar donde
guardaba la imagen obtenida por el SDK y en función de la cámara
seleccionada se crea una nueva a partir del ROI delimitado por el tamaño de
la imagen. Después de esto todo seguía igual, pero me di cuenta de que si
los valores del ancho y alto de la descripción de la cámara
(mycamera->imageDescription->width/height) eran mayores que el ancho y alto
de la imagen a mostrar, la imagen vertical se mostraba sin problemas. Por
tanto, ahora, para la imagen vertical establezco los nuevos valores de la
descripción de la cámara como los valores alto y ancho de la imagen más 1.
Muchas gracias a los dos.
Un saludo
2013/7/22 JoseMaria <josemaria.plaza en gmail.com>
> Hola Alberto,
>
> sip, tiene toda la pinta de ser lo que dice Oscar, tamaño o formato
> (cuantos bytes por píxel...)
>
> Parece que esa cámara sólo entrega fotogramas de tal o cual tamaño y/o
> el SDK nativo no permite otra cosa. Lo que sí está en mano del
> ArdroneServer es una vez capturada mediante el SDK, coger trozos,
> escalarla, etc. para entregarla vía interfaz estandard, con el tamaño y
> formato que nos vengan bien.
>
> Juega con el manejo de ROIs de opencv para recortar, e incluso funciones
> de escalado que tiene. Los tamaños originales de 320x240 para la frontal
> y 174x144 tienen buena pinta, con esos ya se pueden hacer cosillas de
> procesamiento automático de vídeo. De la imagen combinada puede sacar
> tranquilamente dos imágenes, una frontal y otra vertical que entrega vía
> interfaz Ice, aunque una de ellas tenga un boquete (de donde el SDK
> nativo coloca la miniventana de la otra).
>
> Ánimo,
>
> JoseMaria
> On Sun, 2013-07-21 at 21:20 +0200, Oscar Garcia wrote:
> > El 21/07/13 18:04, Alberto Martin escribió:
> > > Para ArDroneServer nos gustaría poder recibir las imágenes por
> > > separado por lo que hice la siguiente modificación en CameraServer
> > > [6], con esto quiero conseguir que en función del modo actual
> > > seleccionado para la cámara CameraServer sirva una imagen o la otra.
> > > Para la imagen frontal todo funciona como antes, se pude ver el
> > > resultado en [7]. Sin embargo para la cámara vertical sucede algo que
> > > no entiendo, podéis ver el resultado en [8].
> > > ¿Alguien sabe a qué se debe este resultado?
> > > [7] modificado_horinzontal:
> > >
> http://jderobot.org/store/amartinflorido/uploads/images/2_modifcado_hor.png
> > > [8] modificado_vertical:
> > > http://jderobot.org/store/amartinflorido/uploads/images/3_mod_vert.png
> >
> >
> > Buenas tardes
> >
> > Tiene toda la pinta que la imagen que obtienes no tiene exactamente las
> > medidas que estás poniendo o que, por otro lado, la codificación de bits
> > no es la misma. Eso suele ocurrir cuando el número de puntos que esperas
> > de una línea no coincide con el real que te mandan. O también puede ser
> > porque esperas que un punto tenga un tamaño en bits que luego es
> diferente.
> >
> > En tu caso parece que estás forzando un ancho en puntos que no es
> > correcto (el real).
> >
> > Si lo que quieres es recortar la imagen pequeña que hay dentro de la
> > grande la forma en la que lo haces NO ES LA CORRECTA.
> >
> > Para recortar una imagen debes usar ROIs (regiones de interés) y no
> > "forzar" el cambio de tamaño como estás haciendo o bien usar el operador
> > asignación (=) tal y como muestro y te pongo enlace a la documentación:
> >
> http://opencv.willowgarage.com/documentation/cpp/core_basic_structures.html#index-7903
> >
> > cv::Mat fotograma = (obtienes el fotograma del ardrone);
> > cv::Mat recorte = fotograma(cv::Range(0, 0),
> > cv::Range(D1_VERTSTREAM_WIDTH, D1_VERTSTREAM_HEIGHT));
> >
> >
> > Un saludo.
> > _______________________________________________
> > Jde-developers mailing list
> > Jde-developers en gsyc.es
> > http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers
>
> --
> http://gsyc.es/jmplaza
> Universidad Rey Juan Carlos
>
>
> _______________________________________________
> 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/20130722/1f7ce791/attachment.htm
More information about the Jde-developers
mailing list