Si quieres poder acceder a OpenCV desde Swift en iOS sólo tienes que seguir los siguientes pasos:

  1. Descarga la última versión de OpenCV para iOS.
  2. Descomprime el archivo ZIP. En su interior habrá un archivo llamado opencv2.framework.
  3. Abre la carpeta del proyecto en el que quieras añadir OpenCV. Copia el archivo opencv2.framework junto con el resto de archivos del proyecto. Debería estar en la misma carpeta que Info.plist.
  4. Abre el proyecto con Xcode.
  5. Haz clic con el nombre del proyecto, el elemento que aparece arriba del todo en el panel de la izquierda.
  6. Selecciona la ficha General.
  7. Haz clic en el botón + dentro de la sección Linked Frameworks and Libraries. Se abrirá un cuadro de diálogo que te permitirá seleccionar archivos.
  8. Haz clic en el botón Add Other… y selecciona el archivo opencv2.framework que se encuentra dentro de la carpeta del proyecto, el que acabas de copiar. Como resultado, opencv2.framework aparecerá en la lista asociada a Linked Frameworks and Libraries y, además, en el panel de la izquierda, dentro de la carpeta Frameworks.

  9. Añade un nuevo archivo de tipo Cocoa Touch Class al proyecto. Llámalo OpenCVWrapper, di que es subclase de NSObject y selecciona Objective-C como lenguaje.
  10. Xcode te preguntará si quieres configurar un bridging header para Objective-C. Haz clic en Create Bridging Header.
  11. OpenCV necesita que trabajes con C++ en lugar de con C, que es la opción predeterminada. Para ello:
    • cambia el nombre del archivo OpenCVWrapper.h por OpenCVWrapper.hpp.
    • cambia el nombre del archivo OpenCVWrapper.m por OpenCVWrapper.mm.
  12. Incluye la siguiente línea en el bridging header que se acaba de crear:

    #import "OpenCVWrapper.hpp"
    
  13. Vamos a crear una función que devuelva el número de versión de OpenCV, la operación más sencilla que podemos llevar a cabo para comprobar que disponemos de OpenCV en nuestra aplicación. Para ello, añade la siguiente declaración al archivo OpenCVWrapper.hpp:

    + (NSString *)getOpenCVVersion;
    

    Su contenido completo debería ser algo así:

    #import <Foundation/Foundation.h>
    
    NS_ASSUME_NONNULL_BEGIN
    
    @interface OpenCVWrapper : NSObject
    
    + (NSString *)getOpenCVVersion;
    
    @end
    
    NS_ASSUME_NONNULL_END
    
  14. Crea el método getOpenCVVersion que acabas de declarar. Para ello, añade el siguiente código al archivo OpenCVWrapper.mm:

    + (NSString *)getOpenCVVersion {
        return [NSString stringWithFormat:@"OpenCV Version %s", CV_VERSION];
    }
    

    Su contenido completo debería ser algo así:

    #import <opencv2/opencv.hpp>
    #import "OpenCVWrapper.hpp"
    
    @implementation OpenCVWrapper
    
    + (NSString *)getOpenCVVersion {
        return [NSString stringWithFormat:@"OpenCV Version %s", CV_VERSION];
    }
    
    @end
    
  15. Añade la siguiente línea al método viewDidload dentro del archivo ViewController:

    print("\(OpenCVWrapper.getOpenCVVersion())")
    

    Su contenido completo debería ser algo así:

    import UIKit
    
    class ViewController: UIViewController {
        override func viewDidLoad() {
            super.viewDidLoad()
    
            print("\(OpenCVWrapper.getOpenCVVersion())")
        }
    }
    
  16. Ejecuta la aplicación. En el área de depuración deberías ver algo como esto:

Bola extra

Si quieres evitar los múltiples mensajes de advertencia que Xcode te mostrará relacionados con la documentación interna de OpenCV cambia la línea

#import <opencv2/opencv.hpp>

por las líneas

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdocumentation"
#import <opencv2/opencv.hpp>
#pragma clang pop

en el archivo OpenCVWrapper.mm.

Fuentes