Desarrollo QT + Opencv (1) -configuración del entorno

Desarrollo de subprogramas QT + OpenCV


Serie de artículos:
Desarrollo Qt + OpenCV (dos) - etiqueta de uso para mostrar imágenes y paquete

plataforma

Windows10 + Opencv4.5.0 + Qt4.15.2 + cmake3.19

Configuración del entorno

descargar

Descarga de Qt: https://www.qt.io/download Después de
Inserte la descripción de la imagen aquí
hacer clic en él, registrará una cuenta y podrá descargarla después de registrarse.
Al instalar, preste atención a descargar el número de versión correspondiente de Qt correspondiente a la versión del compilador. Descarga de
Opencv
Inserte la descripción de la imagen aquí
: https://opencv.org/releases/ Descarga de cmake: https://cmake.org/download/
Inserte la descripción de la imagen aquí
descárgalo e instálalo.

Configuración

Vídeo de referencia de configuración del entorno: compilación del código fuente MinGW + OpenCV4.2 + QT para la demostración del programa

Cabe señalar que hay dos formas de compilar en Qt: una es MinGW y la otra es MSVC, que son dos compiladores diferentes.

1. MSVC se refiere al compilador VC de Microsoft.

2. MingGW son las siglas de Minimalist GNU en Windows. Es una colección de bibliotecas de importación y archivos de encabezado específicos de Windows disponibles y distribuidos libremente utilizando el conjunto de herramientas GNU, lo que le permite generar programas nativos de Windows en plataformas GNU / Linux y Windows sin la necesidad de bibliotecas de tiempo de ejecución de terceros.

Tenga en cuenta la versión Qt: la diferencia entre la versión msvc y MinGW. msvc usa el compilador vs, esta versión se usa principalmente para el desarrollo de PC; la versión MinGW usa el compilador MinGW, que se usa principalmente para el desarrollo multiplataforma. Las dos versiones de la configuración de Qt son completamente diferentes. Por lo tanto, al buscar métodos de configuración en Internet, debe agregar palabras clave como msvc o MinGW para la búsqueda. La mayor parte del contenido de Internet trata sobre el método de configuración de la versión MinGW. La configuración de la versión de Msvc es relativamente simple; la versión de MinGW necesita descargar cmake para compilar opencv por sí misma.

Si usa Msvc para compilar en Qt, no necesita volver a compilar OpenCV. El bin y lib compilados están disponibles en opencv-4.5.0 \ build \ x64 descargados del sitio web oficial.
Si usa MinGW para compilar, debe volver a compilar Opencv con CMake de acuerdo con el video.

Proceso general:

  • Después de instalar Qt, agregue variables de entorno a bin
    Por ejemplo: D: \ Qt_5.15.2 \ Tools \ mingw810_64 \ bin
  • Use MinGw para compilar OpenCV e
    instalar CMake primero Tenga en cuenta que la carpeta bin debajo del archivo de instalación de Cmake también debe agregarse a las variables de entorno.
    Al configurar, preste atención a seleccionar el generador especificado y especificar los compiladores gcc y g ++ en Qt_5.15.2 \ Tools \ mingw810_64 \ bin.
    Inserte la descripción de la imagen aquí
    Después de la configuración, en su configuración predeterminada, verifique y luego verifique:

WITH_OPENGL
WITH_OPENMP
ENABLE_CXX11
BUILD_opencv_world

Si BUILD_opencv_world no está marcado, los archivos generados serán desordenados.

También elimine la marca de abajo

WITH_OPENCL_D3D11_NV
WITH_IPP
ENABLE_PRECOMPLIED_H

WITH_OPENCL_D3D11_NV no se utiliza para la compilación en MinGW y se producirán errores si no se elimina.
De hecho, al compilar Opencv4.5.0, no encontré la opción ENABLE_PRECOMPLIED_H, por lo que no la cambié, esta opción debería estar en la versión 4.2.

Después de verificar, espere a que desaparezca la advertencia roja, puede Generar.
Inserte la descripción de la imagen aquí
Luego, ejecute el símbolo del sistema como administrador, ingrese la ruta de salida de la compilación newbuild e ingrese:

mingw32-make -j8

Presione Enter e inicie la compilación.
Inserte la descripción de la imagen aquí
Durante el proceso de compilación, encontré un error: gcc: error: long: No existe tal archivo o directorio
Razón : el windres.exe que usa mingw no puede manejar / escapar “long long” dado como cmdline arg

Solución : busque OPENCV_ENABLE_ALLOCATOR_STATS en cmake o busque en la búsqueda, luego elimine la siguiente marca, luego Configure and Generate, y luego mingw32-make en la ventana de cmd para continuar compilando.

Una vez completada la compilación, ingrese:

mingw32-make install

Las cosas debajo del archivo de instalación son lo que necesitamos.
Inserte la descripción de la imagen aquí
En este punto, la compilación de OpenCV ha terminado.
No olvides agregar la ruta bin de OpenCV a la variable de entorno (por ejemplo, la mía es D: \ opencv-4.5.0 \ newbuild \ install \ x64 \ mingw \ bin).

Demostración de código

Cree un entorno OpenCV en Qt

Simplemente haga clic para crear un nuevo proyecto en el video. Tenga en cuenta que MinGW de 64 bits está seleccionado en Kits (si usa la versión Opencv compilada por MinGW)

Inserte la descripción de la imagen aquí
A continuación, haga clic con el botón derecho en el nombre del proyecto, haga clic en Agregar biblioteca> Biblioteca externa, agregue los archivos de encabezado y los archivos de biblioteca en la instalación recién compilada, y
Inserte la descripción de la imagen aquí
luego puede escribir el código.
Para obtener más tutoriales sobre Qt, puede consultar el tutorial oficial , que es bastante detallado y contiene muchas demostraciones, que son bastante buenas para aprender.

Los códigos principales:

main.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "opencv2/opencv.hpp"
#include "QHBoxLayout"
#include "QLabel"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    
    
    ui->setupUi(this);
    QHBoxLayout *layout = new QHBoxLayout(ui->centralwidget);
    QLabel *label = new QLabel();
    layout->addWidget(label);
    cv::Mat src = cv::imread("E:/workSpace/qt_workspace/qt_opencvDemo/pictures/test1.jpg");
    cv::cvtColor(src, src, cv::COLOR_BGR2RGB);
    QImage img = QImage(src.data, src.cols, src.rows, src.step, QImage::Format_RGB888);
    int w = img.width();
    int h = img.height();
    if(w > 800 || h > 800)
    {
    
    
        double rate = 888.0 / std::max(w, h);
        int nw = static_cast<int>(rate * w);
        int nh = static_cast<int>(rate * h);
        img = img.scaled(QSize(nw, nh), Qt::KeepAspectRatio);

    }
    QPixmap mp;
    mp = mp.fromImage(img);
    label->setPixmap(mp);
    label->setAlignment(Qt::AlignCenter);
    src.release();
}

MainWindow::~MainWindow()
{
    
    
    delete ui;
}


Efecto de código:

Inserte la descripción de la imagen aquí

Referencia:
https://blog.csdn.net/nohopenolove/article/details/106411477
https://www.bilibili.com/video/BV1Za4y1v7ra?from=search&seid=16325599423545792934

Supongo que te gusta

Origin blog.csdn.net/weixin_44456692/article/details/110092678
Recomendado
Clasificación