Red de conocimiento informático - Material del sitio web - Cómo instalar SIFT localmente

Cómo instalar SIFT localmente

Existen muchas versiones de la implementación de SIFT y solo hay unos pocos métodos específicos. No es fácil encontrar uno que sea fácil de usar, porque la combinación de códigos y el uso no son familiares. Varias versiones están un poco aclimatadas y es necesario ajustarlas. Funcionó. Acabo de usar el código fuente de Rob Hess en VS2010.

Requisito previo uno

Instale Opencv; para obtener más detalles, consulte: Estrategia de configuración VS2010 + Opencv-2.4.0 (esta versión de SIFT se basa en Opencv).

Para descargar el código fuente de SIFT, consulte la página de inicio de Rob Hess (no me diga que no sabe dónde está el enlace de descarga, versión Windows VC++ sift-latest_win.zip).

Prueba

1. Descomprima el código fuente de Sift y busque los siguientes archivos:

Tres de ellos son carpetas de soluciones: siftFeat, match y dspFeat, proyecto siftFeat. Se utiliza para la extracción de funciones SITF y, por lo general, solo se usa en este caso. La coincidencia utiliza funciones SIFT para la coincidencia de imágenes y desFeat no se menciona aquí.

1. Todo el código fuente (incluido el código principal de los tres proyectos anteriores) está fuera de la carpeta, es decir, los pares .h y .c.

2. Puede intentar ejecutar siftFeat.

Abra siftFeat.sln y configure Opencv en los parámetros del entorno VS2010 (descripción de la política de configuración VS201Opencv-2.4.0, tenga en cuenta que incluir debe agregarse / include/opencv, porque el código fuente de tamiz se refiere directamente a /include/opencv. El código fuente de tamiz se refiere directamente al archivo de encabezado en el directorio /include/opencv).

Error de compilación:

1>utils.obj: error LNK2001: símbolo externo irresoluble _va_end

1>utils.obj: error LNK2001: símbolo externo irresoluble _va_start

Dijo que es necesario modificar algunos lugares del código fuente. Hay algunos lugares que deben modificarse: simplemente agregue #include a utils.c.

Ejecute la depuración F5, visualización exitosa:

3. Aplique SIFT en el proyecto C++

1. Cree un nuevo proyecto C++ en VS2010 con su propio PP. Agregue un directorio llamado sift al directorio raíz del proyecto y agregue los archivos de código fuente de sift imgfeatures.c imgfeatures.h kdtree.c kdtree.h minpq.c minpq.h sift.c sift.h utils.c utils.h xform. c xform.h (es decir, todos los archivos de código fuente excepto match.c, siftfeat.c, dspfeat.c) se convierte a \pp\sift.

2. Introduzca el código fuente de Sift en VS2010: agregue "Filtro" en la vista "Explorador", asígnele el nombre Sift y coloque en él el archivo fuente de Sift que acaba de copiar:

3. Agregue el archivo de encabezado correspondiente donde se debe utilizar el método tamiz:

#include?\sift\sift.h"?#include?".\imgfeatures.h"?#include?". \sift\utils.h" 4. Cancele la precompilación de archivos .c: verifique también todos los archivos .c en la carpeta tamizada en la vista "Explorador", haga clic con el botón derecho en "Propiedades" y seleccione "C/C++". > "Encabezado precompilado", seleccione "No utilizar encabezado precompilado" en la opción "Encabezado precompilado".

5. Configuración de sintaxis de C: abra imgfeatures.h y sift.h respectivamente, incluya todo en

#ifdef __cplusplus?extern?"C"?{? #endif

y

#ifdef __cplusplus }?#endif

Para ejemplo:

Ver código

...#ifdef __cplusplus?extern?"C"?{? #endif?....extern?int ?sift_features( IplImage* img, ?struct?feature**?feat ); curv_thr, int?img_ dbl, ?int?descr_width, ?int?descr_hist_bins ); #ifdef __cplusplus }?#endif?#endif

PD: solo usé _sift_features (...) Solo usé _sift_features (...) y algunas otras funciones, así que solo agregué las declaraciones de sintaxis C para estos dos encabezados, si usara otros encabezados necesitaría agregarlos

6. capaz de usar directamente las funciones relacionadas con sift. Consulte el método de escritura en siftfeat.c y pruébelo con _sift_features(...)

De hecho, si solo necesita usar la función de extracción de características SIFT. , los pasos anteriores solo necesitan copiar los 6 archivos imgfeatures.c imgfeatures.h sift.c sift.h utils.c utils.h.