Resumen personal versión detallada de C++ llamadas Opencv y paquete Halcon dll

1. Prólogo:
En el proceso de llamada de C++ a opencv y empaquetado Halcon, se han pisado muchos pozos, pero no se puede encontrar un tutorial claro en Internet. Aquí personalmente resumo los tutoriales detallados para que las futuras generaciones no pisen el foso. Grábalo y podrás echarle un vistazo si lo olvidas más tarde.
2. Detalles del tutorial
2.1 El IDE que uso es vs2017, y todas las introducciones a continuación se basan en este IDE.
Paso 1: seleccione la biblioteca de enlaces dinámicos DLL de C++
inserte la descripción de la imagen aquí
Paso 2: cambie la plataforma de la solución según sus necesidades, la mía es X64. La posición 2 en la siguiente figura es generada por el propio sistema.
inserte la descripción de la imagen aquí
Paso 3: coloque la biblioteca central que debe usarse en la carpeta de código para facilitar las llamadas posteriores. También puede dejarlo solo, pero debe consultar el directorio de instalación de opencv o halcon.
inserte la descripción de la imagen aquí
Paso 4: Configurar el entorno Opencv y Halcon, principalmente en dos lugares. Directorios de biblioteca e inclusión de VC++, dependencias adicionales ingresadas por el enlazador.
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
Paso 5: Cree y edite la clase de función de algoritmo y la clase de función de interfaz. También es posible utilizar una sola clase que contenga tanto la función del algoritmo como la interfaz correspondiente. Personalmente suelo separarme. La Figura 1 a continuación es la clase de interfaz y la Figura 2 a continuación es la clase de función del algoritmo.
inserte la descripción de la imagen aquí
Paso 6: Editar funciones e interfaces. El formato de la función de la interfaz es el siguiente:
6.1 extern “C” _declspec (dllexport) int myAddFunction_interface(int a, int b);
6.2 DllEntry.h necesita hacer referencia a Function.h para llamar a Function.h función.
6.3 Function.h necesita
#include <Halcon.h>
#include <HalconCpp.h>
#include “opencv.hpp”
#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc.hpp>
usando namespace std;
usando namespace HalconCpp;
usando namespace cv;
puede llamar a operadores de Halcon y Opencv.
6.4 DllEntry.h debe hacer referencia a
#include <Halcon.h>
#include <HalconCpp.h>
usando el espacio de nombres estándar;
usando el espacio de nombres HalconCpp;
para encapsular esta función, y el tipo de parámetro es una función de tipo Hobject. Hobject se puede pasar directamente cuando se llama a QT, sin necesidad de pasar punteros de imagen como las funciones de encapsulación tradicionales. De esta forma, es más conveniente utilizar Halcon para el procesamiento de imágenes.
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

Paso 7: En este punto, el paso de encapsulación del algoritmo básicamente ha terminado. Comencemos a crear un programa QT. El proceso de creación de un programa QT es simple y no se presentará. Hable directamente sobre cómo llamar al Dll recién encapsulado.
7.1 Coloque el paquete DllForQt.dll y DllForQt.lib y el archivo de encabezado DllEntry.h de la clase de interfaz en el directorio de ejecución exe del programa QT. A continuación, configure las propiedades del proyecto del programa QT, principalmente para configurar dos lugares, el directorio de inclusión adicional normal de C/C++, el directorio de biblioteca adicional normal del enlazador y las dependencias adicionales de entrada del enlazador. Los dos primeros directorios son los directorios donde se encuentran la DLL y la Lib, que en realidad son el directorio de ejecución exe del programa QT. El vinculador ingresa DllForQt.lib en Dependencias adicionales. Coloque todos los archivos de encabezado en el código encapsulado dll en el directorio de ejecución exe del programa QT. Si desea encapsular y pasar parámetros de estructura, pero la estructura está declarada en Function.h, debe consultar el archivo de encabezado Function.h en QT. Haga referencia a estos dos archivos de encabezado en QT. Las imágenes de los pasos son las siguientes.
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/Douhaoyu/article/details/128406355
Recomendado
Clasificación