Window Qt6 OpenCV 연동

cv2 연동 확인용으로, 별도의 빌드 없이 windows를 다운로드하고 extract 해준다.

윈도우는 시스템 환경 변수 path에 dll 폴더 위치를 넣는다. C:\Users\~~\opencv\build\x64\vc16\bin

 

환경 변수가 잘 들어갔는지 opencv_version을 입력해 확인한다.

Qt를 설치할 때, 여러 옵션이 있는데 for desktop dev를 고르면 오른쪽과 같이 체크가 되는 듯하다.

Custom으로 설치해도 무관한데 윈도우의 경우 MSVC 옵션들을 선택해 주자.

Qt Creator(윈도우) 에서 MinGW(gcc/g++) 컴파일러로 cv2를 사용하려면 cv2를 MinGW로 빌드해줘야 한다.

 

Qt creator에서 New Project를 만들 때, 빌드 환경을 선택한다. 일단 2개 모두 고르고 확인해 보자. 

 

INCLUDEPATH += "C:\Users\~~\opencv\build\include"
LIBS += -L"C:\Users\~~\opencv\build\x64\vc16\lib" \
        -lopencv_world490

프로젝트를 생성하고, 위와 같이 .pro파일에 외부라이브러리 헤더와 lib(또는 dll) 경로를 추가한다.

(윈도우에서 opencv_world.dll은 LINK1104 에러와 함께 열 수 없다고 나온다.)

 

Projects 메뉴에서 Build Environment에 Path를 Edit 할 수 있다.

Qt creator를 실행하기 전에 환경 변수에 경로(~\opencv\build\x64\vc16\bin) 를 추가했다면 들어가 있다. (그래도 한번 더 확인.)

//mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <opencv2/opencv.hpp>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    cv::Mat img; //문제없이 빌드되는지 확인
    ui->setupUi(this);
}

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

cv::Mat img; 을 사용하는데 이상 없는지 확인

빌드할 환경을 고를 수 있다.

 

결과적으로 MSVC 컴파일러에서는 cv2를 에러 없이 실행하고

MinGW 컴파일러에서는 undefined reference to 'cv::Mat::Mat()'와 같은 에러가 나온다.

앞서 말했듯, MinGW 빌드 환경으로 실행해야 한다면 cv2를 MinGW(g++)로 빌드하고 불러오면 해결된다.

'Language > C,C++' 카테고리의 다른 글

c++ 객체 반환, 포인터 관리, 스마트 포인터  (0) 2024.04.23
c++ inline compile  (0) 2024.04.08
열혈 C++ 프로그래밍) Part 1  (0) 2024.03.04