Bienvenido: Ingresar

Versión 25 con fecha 2012-10-05 17:46:26

Quitar mensaje
location: HowTo / BUC2203LinuxInst

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:

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

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

 > 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

#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);
      ....
   }
...

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".

 > cd libopencv_unicap2-0.1.2-Source/
 > patch -p1 < /dondeestaelparche/opencv_unicap2_support_Y800.patch
 > cd build
 > make && make install

zumachen