Bienvenido: Ingresar
location: Diferencias para "HowTo/BUC2203LinuxInst"
Diferencias entre las revisiones 18 y 34 (abarca 16 versiones)
Versión 18 con fecha 2012-09-11 21:56:07
Tamaño: 2152
Comentario:
Versión 34 con fecha 2014-08-06 17:33:27
Tamaño: 5588
Comentario:
Los textos eliminados se marcan así. Los textos añadidos se marcan así.
Línea 3: Línea 3:

/!\ ATENCIÓN: DEPRECATED: Se actualizó el firmware de la cámara y ya no es necesario todo esto :D

Más información en: https://github.com/TheImagingSource/tiscamera/wiki/Linux-Support-for-USB-Cameras

Línea 4: Línea 10:
La cámara anda joia :D
Línea 16: Línea 21:
 > bzr clone lp:unicap  > bzr branch lp:unicap
Línea 20: Línea 25:
 > apt-get install gtk-doc-tools  > apt-get install gtk-doc-tools libxv-dev libgconf2-dev libglade2-dev
Línea 37: Línea 42:
 > ./autogen.sh
Línea 49: Línea 55:
 > bzr clone lp:ucview  > bzr branch lp:ucview
Línea 51: Línea 57:
 > ./autogen.sh
Línea 61: Línea 68:
== Utilización con las OpenCV ==
bajar las librerías de [[http://sourceforge.net/projects/opencvlibrary/|OpenCV]], setear unicap en el cmake y compilar e instalar. Si al ejecutar un ejemplo que use la cámara sale el siguiente error:
 {{{
"unicap: failed to queue a buffer on device"
}}}
Entonces hay que realizar unas modificaciones para que funcione. Este problema es debido a que en la implementación para manejar la cámara dentro de las OpenCV intenta usar el tipo de buffer UNICAP_BUFFER_TYPE_USER. Esta cámara usa el driver euvccam dentro de unicap y en el mismo no esta implementado ese tipo de buffer, pero si esta implementado UNICAP_BUFFER_TYPE_SYSTEM. Existe una nueva implementación de unicap en OpenCV que si usa este tipo de buffer. [[http://sourceforge.net/projects/opencv-unicap2/|OpenCVUnicap2]].

=== El paso a paso ===
 * Bajar el [[http://sourceforge.net/projects/opencv-unicap2/|código]] y realizar los siguientes [[http://www.uco.es/investiga/grupos/ava/node/28|pasos]]. Repetidos aquí:
 {{{
 > tar xzvf libopencv_unicap2-0.1.2-Source.tar.gz
 > cd libopencv_unicap2-0.1.2-Source/
 > mkdir build && cd build/
 > cmake ..
 > make && make install
}}}

 * Para usar esta librería con OpenCV seguir el [[http://www.uco.es/investiga/grupos/ava/node/28|tutorial]]. Repetido aquí:
 {{{
#include <opencv2/core/core.hpp>
#include <opencv_unicap2.hpp>
 
...
 
   VideoCaptureUnicap2 cap (device);
   //now you can use cap as usual.
   if (!cap.isOpened ())
   {
     std::cerr << "Error: could not open device." << std::endl
     exit (-1);
   }
 
   while (cap.grab ())
   {
      cv::Mat img;
      cap.retrieve (img);
      ....
   }
...
}}}

Al compilar este código agregar la bandera de compilación '''-lopencv_unicap2'''


Si al hacer capturas con esta librería (opencv_unicap2) las imágenes aparecen como "desincronizadas" es debido a que no esta soportado el formato de color "Y800".
 * Para solucionar ello hay que descargar y aplicar el siguiente [[attachment:opencv_unicap2_support_Y800.patch|parche]].
 {{{
 > cd libopencv_unicap2-0.1.2-Source/
 > patch -p1 < /dondeestaelparche/opencv_unicap2_support_Y800.patch
 > cd build
 > make && make install
}}}
 * Y debe andar :D ja

== Calibración lente+camara ==
Para la calibración se puede usar los ejemplos que trae el paquete de las opencv, como el programa calibration.cpp.
=== A tener en cuenta ===
El driver (ó la cámara) tiene un problema con la resolución. Cuando uno setea una resolución mas chica que la máxima (744x480), como por ejemplo 320x240, la imagen que se vé es solo la región superior izquierda de la máxima resolución. Por tal motivo (hasta que se resuelva ese problema) cada vez que se desea trabajar con una resolución mas chica se debe tomar una imagen de alta resolución y hacer un resizing. Para el caso de las opencv se puede hacer lo siguiente:
{{{
 Mat view(Size(320,240), CV_8UC1); //imagen de menor resolución
 ...
 Mat view0; //imagen original
 capture >> view0;
 resize(view0, view, view.size(),0,0, INTER_LINEAR );
 ...
}}}
Línea 62: Línea 136:
 * Ver lo de los framerates  * Ver lo de los framerates: es decir no se puede setear correctamente los framerates.
Línea 64: Línea 138:
 * Reportar la falla a los de unicap

/!\ ATENCIÓN: DEPRECATED: Se actualizó el firmware de la cámara y ya no es necesario todo esto :D

Más información en: https://github.com/TheImagingSource/tiscamera/wiki/Linux-Support-for-USB-Cameras

Instalación y uso de la cámara DMK BUC2203 en Debian

La cámara CMOS DMK BUC2203 soporta los formatos Y800 (ByN) en resoluciones de 320*240/640*480/744*480. Las especificaciones se las puede encontrar en la pagina del fabricante( ImagingSource).

El driver de linux para la cámara es desarrollado por Unicap.

Este driver tiene el inconveniente de que detecta la cámara como una cámara de color y no monocromo. Por ello hay que aplicar un parche al código fuente. Dentro de los tipos de cámaras soportados por este driver, la BUC2203 se monta con el driver euvccam en espacio de usuario. Este driver es el que hay que modificar para que funcione.

El paso a paso

Hay que descargar los archivos fuentes del driver, una forma es haciendo un clon del repositorio bazar:

  •  > apt-get install bzr
     > bzr branch lp:unicap 
    Instalar los siguientes paquetes extras:
     > apt-get install gtk-doc-tools libxv-dev libgconf2-dev libglade2-dev

Para hacer andar la cámara con este driver hay que realizar las siguientes modificaciones.

  • Descargar y aplicar el siguiente parche parcheBUC2203_v01.patch,

  • y ejecutar la siguiente instrucción:
     > cd unicap/libunicap/
     > patch -p1 < /dondeestaelparche/parcheBUC2203_v0x.patch
     > ./autogen.sh
     > ./configure 
     > make 
     > make install
  • Luego compilar e instalar libucil y libunicapgtk:
     > cd unicap/libucil/
     > ./autogen.sh
     > ./configure
     > make 
     > make install
     > cd unicap/libunicapgtk
     > ./autogen.sh
     > ./configure 
     > make 
     > make install
  • Para comprobar que la cámara funciona se puede compilar e instalar el programa ucview:
     > bzr branch lp:ucview 
     > cd ucview/trunk/ucview
     > ./autogen.sh
     > ./configure
     > make
     > make install
  • Luego ejecutamos:
     > ucview
  • Y debe andar :D ja

Utilización con las OpenCV

bajar las librerías de OpenCV, setear unicap en el cmake y compilar e instalar. Si al ejecutar un ejemplo que use la cámara sale el siguiente error:

  • "unicap: failed to queue a buffer on device"

Entonces hay que realizar unas modificaciones para que funcione. Este problema es debido a que en la implementación para manejar la cámara dentro de las OpenCV intenta usar el tipo de buffer UNICAP_BUFFER_TYPE_USER. Esta cámara usa el driver euvccam dentro de unicap y en el mismo no esta implementado ese tipo de buffer, pero si esta implementado UNICAP_BUFFER_TYPE_SYSTEM. Existe una nueva implementación de unicap en OpenCV que si usa este tipo de buffer. OpenCVUnicap2.

El paso a paso

  • Bajar el código y realizar los siguientes pasos. Repetidos aquí:

     > tar xzvf libopencv_unicap2-0.1.2-Source.tar.gz
     > cd libopencv_unicap2-0.1.2-Source/
     > mkdir build && cd build/
     > cmake ..
     > make && make install
  • Para usar esta librería con OpenCV seguir el tutorial. Repetido aquí:

    #include <opencv2/core/core.hpp>
    #include <opencv_unicap2.hpp>
     
    ...
     
       VideoCaptureUnicap2 cap (device);      
       //now you can use cap as usual.
       if (!cap.isOpened ())
       {
         std::cerr << "Error: could not open device." << std::endl
         exit (-1);
       }
     
       while (cap.grab ())
       {
          cv::Mat img;
          cap.retrieve (img);
          ....
       }
    ...

Al compilar este código agregar la bandera de compilación -lopencv_unicap2

Si al hacer capturas con esta librería (opencv_unicap2) las imágenes aparecen como "desincronizadas" es debido a que no esta soportado el formato de color "Y800".

  • Para solucionar ello hay que descargar y aplicar el siguiente parche.

     > cd libopencv_unicap2-0.1.2-Source/
     > patch -p1 < /dondeestaelparche/opencv_unicap2_support_Y800.patch
     > cd build
     > make && make install
  • Y debe andar :D ja

Calibración lente+camara

Para la calibración se puede usar los ejemplos que trae el paquete de las opencv, como el programa calibration.cpp.

A tener en cuenta

El driver (ó la cámara) tiene un problema con la resolución. Cuando uno setea una resolución mas chica que la máxima (744x480), como por ejemplo 320x240, la imagen que se vé es solo la región superior izquierda de la máxima resolución. Por tal motivo (hasta que se resuelva ese problema) cada vez que se desea trabajar con una resolución mas chica se debe tomar una imagen de alta resolución y hacer un resizing. Para el caso de las opencv se puede hacer lo siguiente:

 Mat view(Size(320,240), CV_8UC1); //imagen de menor resolución
 ...
 Mat view0; //imagen original              
 capture >> view0; 
 resize(view0, view, view.size(),0,0, INTER_LINEAR ); 
 ...

zumachen

  • Ver lo de los framerates: es decir no se puede setear correctamente los framerates.
  • Ver que pasa si se conecta una camara color con el ID 8201

None: HowTo/BUC2203LinuxInst (última edición 2014-08-06 17:33:27 efectuada por GastonAraguas)