Sistema de Visión

30/05/2009 at 6:21 pm (Robot Nao)

Una vez tenemos el proxy al módulo de NaoCam podemos llamar a sus métodos.

Primero registraremos los parámetros en la cámara, ajustando la resolución, el tipo de imagen que queremos obtener y el refresco. En nuestro caso obtendremos la imagen en RGB en formato VGA (640 x 480) con 5fps de refresco.

    gvm_fname = camera_proxy->call<std::string>(“register”, gvm_fname,     
    camera_resolution, colorSpace, fps);    

Luego seleccionaremos la cámara que queramos usar, en nuestro caso usaremos una variable que modificamos con el interfaz gráfico para elegir entre la cámara frontal o la que apunta al suelo.

    camera_proxy->callVoid(“setParam”, kCameraSelectID, camera_selection);    

Una vez configurada podremos coger la imagen de la cámara, usaremos el método getImageRemote en una llamada al proxy para obtener una imagen del tipo ALValue.

    AL::ALValue lastImage;    
    lastImage = camera_proxy->call<AL::ALValue>(string(“getImageRemote”),      
    gvm_fname);    

Antes de mostrar la imagen en el interfaz realizamos alguna prueba para verificar que la obteniamos correctamente. Sacamos de la imagen los datos que la definían (alto, ancho, número de capas (al ser rgb son 3), el tipo de imagen y el tamaño) y los imprimimos por la salida estándar (consola).

salida shell

También nos creamos un fichero .ppm donde la guardabamos para poder comprobar con un editor de imagen que los colores son iguales.

Después de comprobar que lo hacía correctamente la mostramos por el interfaz. Tendremos que crearnos una variable del tipo wxImage y la pintaremos pixel por pixel con los componentes rgb leidos.

    wxImage *image;    
    image->SetRGB(x, y, R, G,  B);    

Una vez tengamos la imagen tendremos que mostrarla por el interfaz, usaremos un cliente dc para ello.

    wxBitmap bitmap1(*image);    
    wxClientDC dc1(bitmap_1);    
    bitmap_1->GetPosition(&xx ,&yy);    
    dc1.DrawBitmap(bitmap1, xx, yy, false);    

Al pintar la imagen pixel por pixel y tener los componentes RGB separados nos permite mostrarlos individualmente. En nuestro programa mostraremos los 3 y la imagen completa.

rgb

RGB2

Advertisement

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s

Seguir

Get every new post delivered to your Inbox.