Configuración] [biblioteca de extensión OPENCV VS2019 Opencv3.4.9

VS2019 Opencv3 configurar librería extensa

Papel VS2019 + OpenCV3.4.9 + OpenCV Contrib 3.4.9, por ejemplo, puede configurar el módulo de expansión OpenCV, y el proceso de grabación en el que se produce, puede ser deseable para proporcionar una referencia a los demás

1. Herramientas de preparación

2. Descarga de extensiones

Debido a que la base de código de oferta oficial OPENCV en github, ya que el servidor en un país extranjero, la velocidad de descarga es muy lenta, por ejemplo, acerca de la biblioteca de extensiones 50M descarga tarda alrededor de una hora, y con frecuencia no ha podido descargar, ofrece dos soluciones de aquí, se puede código para la nube ( gitee) para descargar.

2.1 método de búsqueda directa

Por ejemplo, se puede descargar OpenCV Contrib a https://gitee.com/mirrors/opencv_contrib?_from=gitee_search descarga.

Método 2.2 se clonó en el código nube

El tenedor de la biblioteca en github a su almacén a continuación, utilizando la función de github gitee directamente entre sí importados, puede clonar el repositorio GitHub a gitee, a continuación, descarga mucho más rápido, se puede ver la referencia suministrado [1]

3. Compilar el código fuente

Compilar el código fuente usando Opencv3.4.9, OPENCV Contrib 3.4.9 y para Cmake

3.1 Crear una carpeta

Creado en los tres archivos en la carpeta del directorio, que es OpenCV descargar el código fuente, opencv_contrib descargar extensiones, NewOpencv después de volver a compilar el código se genera
Aquí Insertar imagen Descripción

3.2 Cmake compilado por primera vez

La primera compilación única código fuente OPENCV, seleccione la ubicación donde el código fuente en el código fuente dentro de ese directorio Opencv3.4.9 archivo fuente, binarios dentro del código fuente deben elegir qué archivos para compilar directorios, donde la elección es NewOpencv

En primer lugar el tiempo de compilación, el compilador va a optar por el uso, porque estoy usando VS2019, por lo que la elección es Visual Studio 16 2019 esta opción. Después de hacer clic en Finalizar, comenzó a compilar el primer tiempo, probablemente tenga que esperar unos minutos para completar la primera compilación

3.3 pares para la primera tiempo para compilar la configuración resultados

Después de compilar el primer extremo, Cmake rojo interfaz habrá una gran cantidad de cosas, esta vez añadimos una biblioteca adicional para usar la biblioteca no libre, archivos de la biblioteca se empaquetan salida de tres operaciones.

  • Agregar biblioteca Contrib
    en busca OPENCV_EXTRA_MODULES_PATH búsqueda interior, encuentra la biblioteca de módulo adicional, añadir la biblioteca de venir módulos opencv_contrib ruta
    Aquí Insertar imagen Descripción
    Cabe señalar que, Cmake formato de archivo que es el camino de barra diagonal /, ventanas de directorio del sistema de archivos son diagonal derecha \, si la copia directa del directorio de archivos de Windows, haga una dirección diagonal cambió un poco, de lo contrario aparecerá un error en la evolución de la configuración este error
    Aquí Insertar imagen Descripción
  • biblioteca no libre usando
    como no libre de la biblioteca de patente OpenCV, para ser usado, entonces, para ser proporcionado que permiten CMake

Aquí Insertar imagen Descripción

  • archivos de la biblioteca se envasan ajustes de salida
    como particularmente OPENCV cada módulo de biblioteca, podemos configurar las opciones para que todos los módulos empaquetados juntos, y finalmente generar sólo unos archivos de la biblioteca lib para una fácil configuración detrás de nuestro archivo de proyecto. Detrás BUILD_opencv_world marque esta opción puede ser.
    Aquí Insertar imagen Descripción

3,4 segundos compilación

3.4.1Cmake de error

Después de completar los tres pasos anteriores configuración, puede hacer clic en la opción de configuración, una segunda configuración.
Al configurar la segunda vez, Cmake habrá algunas sentencias de script, en línea descarga algunas bibliotecas dependientes, como ffmpeg, ippicv, boostdesc y VGG y así sucesivamente. Pero es probable que ocurra no puede ser descargado, el problema de error de sistema. Esta vez tenemos que descargar sus propios archivos. Así que debemos descargar los archivos desde donde se debe copiar estos archivos en el área? Esto nos obliga a mirar en el error de la torta

Aquí Insertar imagen Descripción

Esta vez CMake nos llevó a abrir la carpeta CMakeDownloadLog.txt para ver el contenido detallado del error

Ver archivo 3.4.2 CMakeDownloadLog.txt

Nos carpeta CMakeDownloadLog.txt Abrir para ver la descripción del error en el interior, verá una declaración similar:

Significado de error 3.4.3 guión

El significado de estas cuentas es el siguiente:

(1) con el D: /opencv/opencv/sources/.cache en la carpeta como un amortiguador
(2) desde el sitio
https://raw.githubusercontent.com/opencv/opencv_3rdparty/548e3c997a80d65f710b9048f1d33371e3a203ac/ffmpeg/opencv_ffmpeg.dll descarga ffmpeg /opencv_ffmpeg.dll archivo
(3) valor MD5 del archivo (equivalente ID de archivo) es 168635a192fc2d2ae7d7d40150f0b349
a la última copia del archivo descargado a (4). D: / OpenCV / NewOpencv / 3RDPARTY / FFmpeg
(. 5) y luego el resultado final es descarga falló.

Debido a que es una descarga fallida, por lo que en virtud de la ruta .chche correspondiente, a pesar de que va a generar este archivo, pero el tamaño del archivo es 0KB.
Aquí Insertar imagen Descripción

3.4.4 Solución Manual

Conoce el significado de estas secuencias de comandos más adelante, podemos ser resuelto manualmente. Nos dirigimos a un archivo a los sitios de descarga y otros documentos opencv_ffmpeg.dll

Aquí para descargar ffmpeg_version.cmake presenta un ejemplo.

  1. Copia el lugar equivocado CMakeDownloadLog.txt mencionó, abra la página Web o archivo
  1. Derecha Guardar como para guardar el archivo en su ordenador
    Tenga cuidado de no directamente copiar el contenido de la página, crear sus propias carpetas, archivos, por lo que producen, aunque el nombre es el mismo, pero diferente valor MD5, pueden surgir problemas debido a que los valores de MD5 no coinciden, todavía no se puede utilizar

  2. Copiarse en el directorio correspondiente de .cache nombre del archivo al nombre original + valor MD5 del
    nombre se puede encontrar directamente desde el indicador de error CMakeDownloadLog.txt.
    Aquí Insertar imagen Descripción
    Al igual que esto cambie el nombre del archivo después de .cache copian en el directorio de la carpeta de archivos correspondientes
    Aquí Insertar imagen Descripción

  3. NewOpencv a la replicación del directorio correspondiente
    copiar manualmente los archivos correspondientes a las carpetas de archivos NewOpencv entrar. Aquí el nombre del archivo no necesita agregar valor MD5

  1. Después de la descarga se copia completa de todos los archivos perdidos, haga clic en Configurar CMake, habrá producido ningún error.

3.4.5 finalización de la segunda recopilación

3.5 Build Solution

Haga clic CMake genera interfaz para generar Opnecv compilar el archivo de proyecto con la biblioteca amplificada. Por último, haga clic en Abrir proyecto Abrir la solución, y continúa generando OPENCV amplifica los archivos de cabecera de la biblioteca, bibliotecas, archivos de biblioteca de vínculos dinámicos.

3.6 bibliotecas de generación requerida

En la interfaz del proyecto VS, barra de menú, seleccione generación - "Lote generada
en la interfaz de generación de lotes para encontrar instalar, seleccione Depurar x64 y, a continuación, haga clic en Generar. Si modifica el x86 de 32 bits.
Aquí Insertar imagen Descripción
Instalar proceso de generación de archivos es relativamente largo. Tras el final de la generación, en NewOpencv se encuentra la carpeta de instalación y que coloca sus archivos de cabecera de la biblioteca OpenCV de expansión, archivos de bibliotecas y archivos de la biblioteca de enlace dinámico, carpeta de instalación contiene lo siguiente:
Aquí Insertar imagen Descripción

4. Configuración de generar archivos de proyecto

4.1 nuevo archivo de proyecto

Crear un nuevo archivo a un vacío VS2019

4.2 Adición de camino camino

En Mi PC -> Propiedades -> Configuración avanzada del sistema -> Variables de entorno -> Ruta añadir la ruta en la biblioteca de vínculos dinámicos, ruta de la biblioteca de vínculos dinámicos se encuentra es en la correcta instalación> x64-> vc16-> bin en el
que: D : \ OpenCV \ NewOpencv \ install \ x64 \ vc16 \ bin

Aquí Insertar imagen Descripción

4.3 Adición de ruta cabecera y archivos de bibliotecas

Cabecera ruta del archivo D: \ OpenCV \ NewOpencv \ Install
\ incluyen bibliotecas más el camino a D: \ OpenCV \ NewOpencv \ install \ x64 \ vc16 \ lib

4.4 añadir bibliotecas dependientes adicionales

En Enlazador -> Entrada -> Dependencias adicionales añaden directorio de archivos de la biblioteca lib incluido. Debido a que hemos elegido para compilar el paquete delante del CMake, así que al final sólo se puede añadir un lib que opencv_world349d.lib.

archivo de la biblioteca debe tener otro lib, amplia biblioteca de OPENCV plazo no parece necesario, pero también me vino a unirse a él.

Aquí Insertar imagen Descripción

4,5 copiar los archivos DLL a la biblioteca del sistema de Windows

La correcta instalación> x64-> vc16-> bin replicación opencv_world349d.dll ventanas correspondientes al sistema de tiempo de ejecución.

El sistema 32 copiado en: C: \ Windows \ System32
sistema de replicación a una de 64 bits: C: \ Windows \ SysWOW64

Esto completa la compilación OPENCV y bibliotecas adicionales y el proceso de configuración

Un pequeño problema encontrado durante 4,6

Después de configurar terminado por lo que la biblioteca, escribió algunas extensiones de código, para funcionar, pero el sistema ha sido un error, error de nombre no puede localizar el punto de entrada del procedimiento - en la biblioteca de vínculos dinámicos

De esta manera:
Aquí Insertar imagen Descripción
esta es la razón por la que el sistema no puede encontrar la ubicación de la opencv_world349d.dll juego, en general, la ruta PATH configurado, y copiar los archivos a la carpeta SysWOW64 opencv_world349d.dll después, no debería haber este problema.

Aún más sorprendente es que si el NewOpencv en esta carpeta y copiar el archivo exe en el programa en el mismo camino, el programa será capaz de extender el funcionamiento normal de la biblioteca.

Referencias [6] propusieron ideas para resolver el problema, el original, el archivo de las búsquedas de DLL del sistema se busca en este orden:

Un directorio de archivos ejecutables;
B procesa el directorio actual;
directorio del sistema C,% SystemRoot% system32 /
D directorio de sistema de 16 bits;,% SystemRoot% / Sistema de
directorio de correo de Windows,% SystemRoot% /
F variable de entorno PATH en el directorio;

las extensiones de tiempo OPENCV Por lo tanto, para este problema es debido, no se han instalado con anterioridad, la ruta a los system32 copiar un archivo opencv_world349d.dll, esta biblioteca de vínculos dinámicos no contiene extensa biblioteca, y me escribió las llamadas de programa opencv_world349d.dll cuando, en el orden escrito arriba, sin leer dll sistema de archivo y la ruta ruta 64, pero leer dll de sistema de archivos 32, por lo que habrá problemas de los archivos DLL no coinciden. Cuando el system32 en opencv_world349d.dll eliminado, el programa será capaz de funcionamiento normal.

5. Ejecutar el código de prueba

Aquí característica SURF código de detección para ejecutar pruebas de Ejemplo

#include<iostream>
#include<opencv2/opencv.hpp>
#include<opencv2/xfeatures2d/nonfree.hpp>
#include<opencv2/features2d/features2d.hpp>
#include <opencv2/xfeatures2d.hpp>
using namespace std;
using namespace cv;

int main()
{
	Mat m = imread("1.jpg");
	Mat n = imread("3.jpg");
	imshow("m", m);
	imshow("n", n);
	int minHessian = 400;
	
	

	Ptr<Feature2D>detector = xfeatures2d::SURF::create(minHessian);

	std::vector<KeyPoint> keyPoint1, keyPoint2;

	detector->detect(m, keyPoint1);
	detector->detect(n, keyPoint2);

	Mat mp1, np2;
	drawKeypoints(m, keyPoint1, mp1, Scalar::all(-1), DrawMatchesFlags::DEFAULT);
	drawKeypoints(n, keyPoint2, np2, Scalar::all(-1), DrawMatchesFlags::DEFAULT);

	imshow("m1", mp1);
	imshow("n1", np2);


	waitKey(0);



	return 0;
}


Los resultados son los siguientes:
Aquí Insertar imagen Descripción

material de referencia

[1] solución perfecta para el problema o el fracaso del proyecto en Github la velocidad de descarga es demasiado lento
[2] vs2019 + + opencv3.4.6 contrib3.4.6 fuente compilador
[3] VS2017 + OpenCV SURF 3.x + el uso del operador
[4] cuando CMake OpenCV Descargar: opencv_ffmpeg.dll fracaso, ippicv y otras soluciones
[5] error Cmake: no válido secuencia de escape \ T
[6] [resolver] el problema no puede localizar el punto de entrada del procedimiento ~ (el punto de entrada del procedimiento ~ podría no ser una librería de enlace dinámico bloque situado)
[. 7] opencv3 surfDetector utiliza en
[8] en el operador opencv3.4.0 utilizando SURF

Publicado 14 artículos originales · ganado elogios 1 · visitas 493

Supongo que te gusta

Origin blog.csdn.net/qq_41741344/article/details/104836276
Recomendado
Clasificación