Difference between revisions of "RaspberryPi"

From Asociación de Robótica UC3M
Jump to navigation Jump to search
Line 103: Line 103:
 
project(camcv)
 
project(camcv)
 
SET(COMPILE_DEFINITIONS -Werror)
 
SET(COMPILE_DEFINITIONS -Werror)
 +
#OPENCV
 +
find_package( OpenCV REQUIRED )
 +
 +
link_directories( /home/pi/projects/libfacerec )
 +
 
include_directories(/opt/vc/host_applications/linux/libs/bcm_host/include)
 
include_directories(/opt/vc/host_applications/linux/libs/bcm_host/include)
 
include_directories(/opt/vc/interface/vcos)
 
include_directories(/opt/vc/interface/vcos)
include_directories(/opt/vc/)
+
include_directories(/opt/vc)
 
include_directories(/opt/vc/interface/vcos/pthreads)
 
include_directories(/opt/vc/interface/vcos/pthreads)
 
include_directories(/opt/vc/interface/vmcs_host/linux)
 
include_directories(/opt/vc/interface/vmcs_host/linux)
 
include_directories(/opt/vc/interface/khronos/include)
 
include_directories(/opt/vc/interface/khronos/include)
 
include_directories(/opt/vc/interface/khronos/common)
 
include_directories(/opt/vc/interface/khronos/common)
 
 
add_executable(camcv RaspiCamControl.c RaspiCLI.c RaspiPreview.c camcv.c RaspiTex.c RaspiTexUtil.c teapot.c models.c square.c mirror.c)
 
add_executable(camcv RaspiCamControl.c RaspiCLI.c RaspiPreview.c camcv.c RaspiTex.c RaspiTexUtil.c teapot.c models.c square.c mirror.c)
 +
target_link_libraries(camcv /opt/vc/lib/libmmal_core.so /opt/vc/lib/libmmal_util.so /opt/vc/lib/libmmal_vc_client.so /opt/vc/lib/libvcos.so /opt/vc/lib/libbcm_host.so /opt/vc/lib/libGLESv2.so /opt/vc/lib/libEGL.so /home/pi/projects/libfacerec/build/libopencv_facerec.a ${OpenCV_LIBS})
  
target_link_libraries(camcv /opt/vc/lib/libmmal_core.so /opt/vc/lib/libmmal_util.so /opt/vc/lib/libmmal_vc_client.so /opt/vc/lib/libvcos.so /opt/vc/lib/libbcm_host.so /opt/vc/lib/libGLESv2.so /opt/vc/lib/libEGL.so)
 
 
</pre>
 
</pre>
 +
 +
A partir de la línea 232 está el código preparado para procesar la imagen con OpenCV.
  
 
== SimpleCV ==
 
== SimpleCV ==

Revision as of 18:54, 27 November 2013

Logo concursos.png

Sistemas Operativos

Proyectos interesantes

Guías de instalación

OpenCV

Las librerías de openCV se instalan mediante un script autoejecutable.

$ wget https://raw.github.com/jayrambhia/Install-OpenCV/master/Ubuntu/2.4/opencv2_4_5.sh
$ chmod +x opencv2_4_5.sh
$ ./opencv2_4_5.sh

Posibles problemas

No se pudieron obtener algunos archivos, ¿Quizá deba ejecutar <<apt-get update>> o deba intentarlo de nuevo con --fix-missing?

Para resolver, dejar instalar y cuando acabe, hacer

$ sudo apt-get update

Y volver a ejecutar

$./opencv2_4_5.sh

Una vez compilado despues de unas cuatro horas y media:

$ cd programs/OpenCv/opencv-2.4.5/build
$ sudo make install

A partir de aquí es necesario seguir el tutorial del la siguiente página

El paso 2 trata sobre instalar userland que es un programa llamado rapistill que usa el acceso a la cámara de la raspberry y demás. El paso 3 es para crear el primer programa y poner a prueba los pasos anteriores.

Problema

A la hora de compilar con make (una vez modificado el CMakeLists.txt

fatal error EGL/egl.h: no such file or directory

Se soluciona instalando las librerías legl de synaptic que son las genéricas. Se han instalado las siguientes:

eglibc-source
libegl-0.2-0
libegl-dev

Se instalarán algunas dependencias más pero con estas valen. El último paso es modificar el CMakeLists.txt

cmake_minimum_required(VERSION 2.8)
project(camcv)
SET(COMPILE_DEFINITIONS -Werror)
include_directories(/opt/vc/host_applications/linux/libs/bcm_host/include)
include_directories(/opt/vc/interface/vcos)
include_directories(/opt/vc/)
include_directories(/opt/vc/interface/vcos/pthreads)
include_directories(/opt/vc/interface/vmcs_host/linux)
include_directories(/opt/vc/interface/khronos/include)
include_directories(/opt/vc/interface/khronos/common)

add_executable(camcv RaspiCamControl.c RaspiCLI.c RaspiPreview.c camcv.c RaspiTex.c RaspiTexUtil.c teapot.c models.c square.c mirror.c)

target_link_libraries(camcv /opt/vc/lib/libmmal_core.so /opt/vc/lib/libmmal_util.so /opt/vc/lib/libmmal_vc_client.so /opt/vc/lib/libvcos.so /opt/vc/lib/libbcm_host.so /opt/vc/lib/libGLESv2.so /opt/vc/lib/libEGL.so)

Ahora sí se puede compilar con make y no da problemas.

Finalmente para añadir opencv al programa seguir el paso 4 del tutorial

Para esta parte es necesario haber instalado el lilbfacerec (reconocimiento facial)

projects $ git clone https://github.com/bytefish/libfacerec.git
$ cd libfacerec
$ mkdir build
$ cd build
$ cmake ..
$ make

Ya se puede modificar el CMakeLists.txt

cmake_minimum_required(VERSION 2.8)
project(camcv)
SET(COMPILE_DEFINITIONS -Werror)
#OPENCV
find_package( OpenCV REQUIRED )

link_directories( /home/pi/projects/libfacerec )

include_directories(/opt/vc/host_applications/linux/libs/bcm_host/include)
include_directories(/opt/vc/interface/vcos)
include_directories(/opt/vc)
include_directories(/opt/vc/interface/vcos/pthreads)
include_directories(/opt/vc/interface/vmcs_host/linux)
include_directories(/opt/vc/interface/khronos/include)
include_directories(/opt/vc/interface/khronos/common)
add_executable(camcv RaspiCamControl.c RaspiCLI.c RaspiPreview.c camcv.c RaspiTex.c RaspiTexUtil.c teapot.c models.c square.c mirror.c)
target_link_libraries(camcv /opt/vc/lib/libmmal_core.so /opt/vc/lib/libmmal_util.so /opt/vc/lib/libmmal_vc_client.so /opt/vc/lib/libvcos.so /opt/vc/lib/libbcm_host.so /opt/vc/lib/libGLESv2.so /opt/vc/lib/libEGL.so /home/pi/projects/libfacerec/build/libopencv_facerec.a ${OpenCV_LIBS})

A partir de la línea 232 está el código preparado para procesar la imagen con OpenCV.

SimpleCV

Estas librerías sirven para poder utilizar la raspicam desde un programa escrito en python.

Instalación

Seguir los pasos descritos en esta página.

sudo apt-get install git
git clone git://github.com/sightmachine/SimpleCV.git
cd SimpleCV
python setup.py install
sudo pip install --upgrade pip

Sal de la sesión y vuelve a entrar.

sudo pip install virtualenvwrapper

Modificar ./bashrc para incluir la siguiente línea al final del todo.

source /usr/local/bin/virtualenvwrapper.sh

Cierra el terminal y vuelve a abrirlo para cargar el .bashrc editado. Otra opción es ejecutar:

. .bashrc

Llegados a este punto, conviene saber cómo funciona el virtualenvwrapper. Para ello esta página es de gran interés.

Lo más importante es crear el espacio de trabajo y luego acceder a él con un workon.



By-sa.png Este obra está bajo una licencia de Creative Commons Reconocimiento-CompartirIgual 3.0 Unported.