OpenCV 2.1 en MacOS Snow Leopard

OpenCV (Open Source Computer Vision – Visión por Ordenador de Código Abierto) es un conjunto de librerías que nos ofrecen más de 500 algoritmos para visión artificial por ordenador:

Este proyecto libre lleva en pié muchos años, y funciona en cualquier plataforma, lo que incluye Windows, Linux y por supuesto MacOS. En esta entrada veremos como compilarlo y usarlo desde la plataforma MacOS.

Requisitos

Lo primero es disponer de Xcode para MacOS, sino sabes lo que es empezamos mal. Es el IDE de desarrollo más compiladores de MacOS; no te preocupes es gratuito, vete a la web de Apple y descárgatelo (ocupa varios Gigas). Comprueba que puedes compilar, ejecutando por ejemplo: gcc -v.

OpenCV no se compila con las típicas instrucciones de ./configure, etc, sino que usa cmake http://www.cmake.org/cmake/resources/software.html. Al finalizar la instalación, cuándo te pregunte si quieres añadir la ruta /usr/bin al PATH (o similar) dile que sí. Comprueba que todo ha ido bien al instalar: cmake -v.

También necesitaremos pkg-config, descargaremos la última edición del enlace: http://pkgconfig.freedesktop.org/releases/pkg-config-0.23.tar.gz. Una vez descargado lo descomprimiremos, compilaremos e instalaremos (con permisos de súper usuario):


tar xzf pkg-config-0.23.tar.gz
cd pkg-config-0.23
./configure --prefix=/usr
make
sudo make install

Una librería fundamental es ffmpeg, la descargamos de http://ffmpeg.org/download.html, luego configuramos (añadir la opción --arch=x86_x64 sólo si nuestro PC es de 64 bits), compilamos e instalamos:


tar xjf ffmpeg-0.5.1.tar.bz2
cd ffmpeg-0.5.1
./configure --arch=x86_x64 --prefix=/usr --enable-nonfree
make
sudo make install
sudo make install-libs

Obtener OpenCV

Tenemos que descargar la versión para UNIX (esto incluye a MacOS) del siguiente enlace: http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.1/.

Descomprimimos el archivo descargado y entramos en la carpeta de los fuentes:


tar xjf OpenCV-2.1.0.tar.bz2
cd OpenCV-2.1.0

Compilación e instalación

Configuramos cambiando la ruta de instalación a /usr, luego compilamos (tardará varios minutos) e instalamos con permisos de súper usuario:


cmake -DCMAKE_INSTALL_PREFIX=/usr .
make
sudo make install

Ejemplos


cd samples/c
chmod +x build_all.sh
./build_all.sh

Si todo va bien ejecutaremos el programa de detección de caras, si tienes una web cam, te verás el careto y además un círculo azul alrededor de ella, prueba a moverte un poco, ya verás como te sigue:


./facedetect

12 comentarios

  1. christian dice: Responder

    Realize este tutorial hasta el final, se instaló todo, logre usar el programa de reconocimiento facial, ahora deseo realizar un trabajo usando OpenCV desde xcode pero no puedo hacer que funcione, descarge los frameworks y tampoco, incluyendo si abro el archivo que viene en los ejemplos aparece los mismos errores, no logro compilar, ayuda plz

  2. carlos dice: Responder

    hola, soy nuevo en mac y con todo lo relacionado, instale el xcode y necesito usar la libreria opencv para la universidad, pero no he podido instalarlo aun siguiendo tus instrucciones, no se a que te refieres con compilar para instalar y no se donde coloco lo que esta en letra roja

    1. Creo que estás un poco pez, ¿no?, ni siquiera sabes lo que es una línea de comandos???

      Antes de leer este post, deberías leer alguno de manejo básico de Mac OS y sobre shell, ¿no te pacece?, quizás otro de Software libre, dado que todo el SW libre suele venir en código fuente, es decir hay que “compilarlo para instalarlo”.

  3. Marcelo dice: Responder

    Hola !

    ante todo gracias por el tutorial. Funciona perfecto !!

    En mi caso estoy intentado hacer un software de reconocimiento facil con OpenCV, pero me doy suenta de que me queda muuuucho trabajo.

    Estoy intentando usar como base el facedetect, pero me da errores de compilacion en Xcode.

    Como podría hacerlo ?? alguna sugerecencia ??? Agradecería cualquier consejo.

    Un saludo

  4. angel dice: Responder

    Hola que tal, me podrias decir como puedo compilar mis propios programas con opencv?

    1. En la carpeta “samples” tienes ejemplos muy sencillos que pueden servirte como base para tus propios programas.

  5. Javi dice: Responder

    Hola!

    No consigo instalar CMake en un MAC OS X 10.6. Si lo hago mediante .dmg no me crea el usr/bin/ y cuando pongo en el terminal cmake -v me pone que no existe. Y si lo hago con los binarios, también me da error. Lo he intentado instalar con los macports pero tampoco y no tengo mucha idea de esto porque yo he programado lo básico. Si me puedes echar una mano…

  6. Javier dice: Responder

    Hola men oye tengo problemas
    tengo un par de problemas no se como resolverlos

    cc1objplus: warning: /Users/javocst/Desktop/OpenCV-2.1.0/src/highgui/_highgui.h.gch/highgui_Release.gch: not for GNU Objective-C++
    In file included from /System/Library/Frameworks/CoreServices.framework/Headers/CoreServices.h:41,
    from /System/Library/Frameworks/ApplicationServices.framework/Headers/ApplicationServices.h:20,
    from /System/Library/Frameworks/Foundation.framework/Headers/NSAppleEventDescriptor.h:8,
    from /System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:107,
    from /System/Library/Frameworks/Cocoa.framework/Headers/Cocoa.h:12,
    from /Users/javocst/Desktop/OpenCV-2.1.0/src/highgui/window_cocoa.mm:44:
    /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LaunchServices.h:21:38: error: LaunchServices/IconsCore.h: No such file or directory
    /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h:659: error: ‘IconRef’ has not been declared
    /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h:721: error: ‘IconRef’ has not been declared
    /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.h:863: error: ‘IconRef’ does not name a type
    /System/Library/Frameworks/ApplicationServices.framework/Frameworks/HIServices.framework/Headers/Icons.h:980: error: ‘IconRef’ was not declared in this scope
    /System/Library/Frameworks/ApplicationServices.framework/Frameworks/HIServices.framework/Headers/Icons.h:981: error: expected primary-expression before ‘whichIcons’
    /System/Library/Frameworks/ApplicationServices.framework/Frameworks/HIServices.framework/Headers/Icons.h:982: error: expected primary-expression before ‘*’ token
    /System/Library/Frameworks/ApplicationServices.framework/Frameworks/HIServices.framework/Headers/Icons.h:982: error: ‘iconFamily’ was not declared in this scope
    /System/Library/Frameworks/ApplicationServices.framework/Frameworks/HIServices.framework/Headers/Icons.h:982: error: initializer expression list treated as compound expression
    /System/Library/Frameworks/ApplicationServices.framework/Frameworks/HIServices.framework/Headers/Icons.h:1116: error: ‘IconServicesUsageFlags’ has not been declared
    /System/Library/Frameworks/ApplicationServices.framework/Frameworks/HIServices.framework/Headers/Icons.h:1117: error: ‘IconRef’ has not been declared
    /System/Library/Frameworks/ApplicationServices.framework/Frameworks/HIServices.framework/Headers/Icons.h:1169: error: ‘IconRef’ has not been declared
    /System/Library/Frameworks/ApplicationServices.framework/Frameworks/HIServices.framework/Headers/Icons.h:1200: error: ‘IconServicesUsageFlags’ has not been declared
    /System/Library/Frameworks/ApplicationServices.framework/Frameworks/HIServices.framework/Headers/Icons.h:1201: error: ‘IconRef’ has not been declared
    /System/Library/Frameworks/ApplicationServices.framework/Frameworks/HIServices.framework/Headers/Icons.h:1231: error: ‘IconServicesUsageFlags’ has not been declared
    /System/Library/Frameworks/ApplicationServices.framework/Frameworks/HIServices.framework/Headers/Icons.h:1232: error: ‘IconRef’ has not been declared
    /System/Library/Frameworks/ApplicationServices.framework/Frameworks/HIServices.framework/Headers/Icons.h:1261: error: ‘IconServicesUsageFlags’ has not been declared
    /System/Library/Frameworks/ApplicationServices.framework/Frameworks/HIServices.framework/Headers/Icons.h:1262: error: ‘IconRef’ has not been declared
    /System/Library/Frameworks/ApplicationServices.framework/Frameworks/HIServices.framework/Headers/Icons.h:1310: error: ‘IconServicesUsageFlags’ has not been declared
    /System/Library/Frameworks/ApplicationServices.framework/Frameworks/HIServices.framework/Headers/Icons.h:1311: error: ‘IconRef’ has not been declared
    /System/Library/Frameworks/ApplicationServices.framework/Frameworks/HIServices.framework/Headers/Icons.h:1357: error: ‘IconServicesUsageFlags’ has not been declared
    /System/Library/Frameworks/ApplicationServices.framework/Frameworks/HIServices.framework/Headers/Icons.h:1358: error: ‘IconRef’ has not been declared
    /System/Library/Frameworks/ApplicationServices.framework/Frameworks/HIServices.framework/Headers/Icons.h:1397: error: ‘IconServicesUsageFlags’ has not been declared
    /System/Library/Frameworks/ApplicationServices.framework/Frameworks/HIServices.framework/Headers/Icons.h:1398: error: ‘IconRef’ has not been declared
    /System/Library/Frameworks/ApplicationServices.framework/Frameworks/HIServices.framework/Headers/Icons.h:1437: error: ‘IconServicesUsageFlags’ has not been declared
    /System/Library/Frameworks/ApplicationServices.framework/Frameworks/HIServices.framework/Headers/Icons.h:1438: error: ‘IconRef’ has not been declared
    /System/Library/Frameworks/ApplicationServices.framework/Frameworks/HIServices.framework/Headers/Icons.h:1461: error: ‘IconRef’ was not declared in this scope
    /System/Library/Frameworks/ApplicationServices.framework/Frameworks/HIServices.framework/Headers/Icons.h:1487: error: ‘IconRef’ does not name a type
    /System/Library/Frameworks/AppKit.framework/Headers/NSImage.h:83: error: expected type-specifier before ‘IconRef’
    /System/Library/Frameworks/AppKit.framework/Headers/NSImage.h:83: error: expected `)’ before ‘IconRef’
    /System/Library/Frameworks/AppKit.framework/Headers/NSImage.h:83: error: expected `;’ before ‘)’ token
    /Users/javocst/Desktop/OpenCV-2.1.0/src/highgui/window_cocoa.mm: In function ‘int cvInitSystem(int, char**)’:
    /Users/javocst/Desktop/OpenCV-2.1.0/src/highgui/window_cocoa.mm:117: warning: ‘NSApplication’ may not respond to ‘-setActivationPolicy:’
    /Users/javocst/Desktop/OpenCV-2.1.0/src/highgui/window_cocoa.mm:117: warning: (Messages without a matching method signature
    /Users/javocst/Desktop/OpenCV-2.1.0/src/highgui/window_cocoa.mm:117: warning: will be assumed to return ‘id’ and accept
    /Users/javocst/Desktop/OpenCV-2.1.0/src/highgui/window_cocoa.mm:117: warning: ‘…’ as arguments.)
    make[2]: *** [src/highgui/CMakeFiles/highgui.dir/window_cocoa.o] Error 1
    make[1]: *** [src/highgui/CMakeFiles/highgui.dir/all] Error 2
    make: *** [all] Error 2

    no se si me puedan orientar gx por la atención, solo que yo no tengo snow leopard, si no solamente leopard todo va bien hasta q quise configurar el OpenCV

  7. Victor B dice: Responder

    Hola Emilio,

    Llevo 3 días intentando instalar OpenCV en mi Mac y no lo consigo. Mi intención es utilizar Python con OpenCV pero ni siquiera logro instalar bien openCV. Tengo Snow Leopard.

    Instalé cmake, pkg-config y ffmpeg justo como lo indicas. También OpenCV, pero me sale esto en todos los archivos cuando corro build_all:

    compiling tree_engine.cpp
    Package opencv was not found in the pkg-config search path.
    Perhaps you should add the directory containing `opencv.pc’
    to the PKG_CONFIG_PATH environment variable
    No package ‘opencv’ found
    Package opencv was not found in the pkg-config search path.
    Perhaps you should add the directory containing `opencv.pc’
    to the PKG_CONFIG_PATH environment variable
    No package ‘opencv’ found
    tree_engine.cpp:1:16: error: ml.h: No such file or directory

    Tienes alguna idea de qué podrá estar sucediendo?

    Muchas gracias por tu ayuda!

    1. Creo que no has seguido todos los pasos, revisa el post.

      1. Victor dice: Responder

        Listo, perfecto…

        Alguna idea de cómo hacer funcionar a OpenCV con Python?
        He seguido algunos tutoriales de pyopencv pero no he tenido éxito.

        Gracias!

  8. Charlie Eppes dice: Responder

    Hi Emilio,

    Thanks for the tutorial it works perfect!

    Do you know how to create an XCode project to use this installed library?

    Thanks in advance.
    Charlie.

Deja un comentario