¿Cómo hacer que el proyecto OpenCV se ejecute en una computadora sin VS y OpenCV?
Hay dos formas de resolver este problema:
1. Utilice bibliotecas dinámicas para copiar el .lib, .dll, .h, etc. requerido y el proyecto .exe a otro. una computadora.
2. Utilice una biblioteca estática para compilar directamente el .lib requerido por el proyecto en el .exe. El .exe en este momento será mucho más grande que el del método 1, pero solo necesita copiar. one.exe en otra computadora.
II. ¿Cómo compilar .lib en .exe?
Tenga en cuenta que .lib aquí es una biblioteca de enlaces estáticos, que es diferente de la biblioteca de arranque .lib de la biblioteca de enlaces dinámicos (la biblioteca de enlaces dinámicos .dll debe tener un .lib como biblioteca de arranque) .
El primer paso para compilar .lib en .exe es compilar la biblioteca estática .lib de OpenCV. Para obtener detalles sobre cómo compilar, consulte OpenCV - Compilación de la biblioteca estática OpenCV (Biblioteca estática)
Después de generar la biblioteca estática para OpenCV, puede continuar con el segundo paso.
1. Configure la biblioteca estática adecuada en el proyecto.
2. Propiedades de configuración ->Uso de MFC: configurado para usar MFC en bibliotecas estáticas
3. Propiedades de configuración ->C/C ->Generación de código ->Bibliotecas de tiempo de ejecución: configurado para subprocesos múltiples (/MT).
En VC (2005), hay cuatro bibliotecas de tiempo de ejecución: multithreading (/MT), multithreading-debugging-dll (/MDD), multithreading-dll (/MD), multithreading-debugging-dll (/MDD): Las dos primeras son bibliotecas de tipo estático, que proporcionan funciones que se vincularán al programa; las dos últimas son bibliotecas dinámicas, que proporcionan funciones para que el programa las llame en forma de bibliotecas de vínculos dinámicos.
Una vez completada la configuración, puede utilizar el .exe generado directamente.
Puede consultar esta parte del contenido: Notas de estudio de OpenCV (32): demostración de producción de biblioteca estática, puede mantenerla sin dll
3. Suplementos
1. De hecho, después de instalar y compilar OpenCV, su propia biblioteca estática ya está incluida en las rutas (build/x86/vc10/staticlib y (build/x64/vc10/staticlib), por lo que este artículo utiliza CMake para compilar el biblioteca estática La parte se puede omitir.
2. Ejecute el .exe generado en el paso 2 y descubra que la lectura del video no se realizó correctamente. La razón es que la decodificación de video de OpenCV y otros procesamientos se basan en ffmpeg. que OpenCV solo proporciona. La biblioteca de enlaces dinámicos ffmpeg opencv_ffmpeg***.dll no tiene una biblioteca de enlaces estáticos y no se puede generar ni siquiera usando CMake (marcar CON_FFMPEG no puede)
Por lo tanto, si desea leer el video correctamente. , el .exe necesita un .dll compatible, es decir, opencv_ffmpeg***.dll
3 Para conocer el método de compilación de la biblioteca de enlaces estáticos ffmpeg, consulte: Compilación de la biblioteca estática ffmpeg para Visual C en MinGW.
De acuerdo con este método, se pueden compilar un montón de archivos .a, es decir, la biblioteca estática ffmpeg. Estos archivos .a se llaman en un orden determinado. Después de seguir la configuración del artículo, todavía no puedo abrir el vídeo.
Al mismo tiempo, noté que hay archivos similares en OpenCV. Están almacenados en \opencv\3rdparty\include\ffmpeg_ y opencv\3rdparty\lib respectivamente. Deben ser bibliotecas estáticas de ffmpeg. pero después de configurarlos todavía no puedo abrir el video.
Así que el último recurso es agregar soporte para .dll, es decir, opencv_ffmpeg****.dll.
4. Con respecto al artículo: Notas de estudio de OpenCV (32): demostración de cómo crear una biblioteca estática, también es posible sin dll. Nunca encontré el videoInput.lib "hold" mencionado en el artículo. Creo que es una versión diferente.