본문 바로가기
Open CV

윈도우 C++ VSCode OpenVC 환경설정

by 빈이쥬 2023. 1. 4.

mingw-w64 설치하기

컴파일러란 C++에서 작성된 기계어를 즉시실행될수 있는 령태의 프로그램으로 바꾸어주는 번역프로그램이다. 

 

 c++ 컴파일러를 위해 mingw-w64를 설치.

https://sourceforge.net/projects/mingw-w64/files/

 

MinGW-w64 - for 32 and 64 bit Windows - Browse Files at SourceForge.net

Trusted by thousands of teams, Jira offers access to a wide range of tools for planning, tracking, and releasing world-class software, capturing and organizing issues, assigning work, and following team activity. It also integrates with leading developer t

sourceforge.net

 

설정

 

설치진행 시 위와 같은 에러가 발생한다면 압축파일을 직접 다운받은 후 환경변수를 설정해 줍니다. 

 

설치 된 압축파일을 C:\Program Files (x86)에 압축을 풀고 환경변수 설정을 합니다. 

명령프롬포트를 실행하여 설치가 되었는지 확인한다.

 

OpenCV 설치 

https://github.com/opencv/opencv/releases

 

Releases · opencv/opencv

Open Source Computer Vision Library. Contribute to opencv/opencv development by creating an account on GitHub.

github.com

마지막 릴리즈 버전을 설치 합니다. 

 

opencv contrib 설치

opencv contrib 는 같은 버전으로 받아줍니다. 

https://github.com/opencv/opencv_contrib/releases

 

Releases · opencv/opencv_contrib

Repository for OpenCV's extra modules. Contribute to opencv/opencv_contrib development by creating an account on GitHub.

github.com

 

두개의 압축파일을 풀어서 OpenCV폴더에 넣어줍니다. 

폴더의 이름은 알아서 정해주면 됩니다. 

 

cmake 설치

CMake C 프로젝트를 빌드하기 위한 Makefile을 보다 쉽고 편리하게 작성할 수 있는 툴이다

 

https://cmake.org/download/

 

cmake로 빌드 하기

 

소스코드의 위치는 OpenCV폴더의 opencv-4.7.0로 설정하고 빌드 폴더는 OpenCV폴더에 build폴더를 생성하여 설정해줍니다. 

Configure는 MinGW Makefiles로 설정합니다. 

 

완료가 되면 아래와 같이 출력이 되는데 빌요없는건 체크를 해제해 줍니다. 

java 등 해지를 하는 이유는 빌드시 시간, 공간을 절약하기 위함 입니다. 

 

java 해제

directx 해제 

opencl

체크를 위와 같이 해제한 후 configure을 해줍니다.

search에 extra를 입력하여 미리 받은 opencv_contrib-4.7.0\modules 경로를 지정한다.

opencv 기능을 사용하기 위함이며. module의 경로는  "OpenCV\opencv_contrib-4.7.0\modules"

 

 

경로를 지정한 후 configure을 해준다

 

아래와 같이 "world" "nonfree"의 체크박스를 선택한다

완료 후  configure을 해준다.

 

install을 검색하여 빌드가 저장되는 폴더의 위치를 지정한다.

최종적으로 빌드되는 폴더를 만들어 지정하였다.

완료후 Generate를 누른 후 완료가 되면 build 폴더에 빌드한 파일들이 생성 됨.

 

명령 프롬포트를 연다.

build 폴더로 이동하여 아래와 같이 입력하면 빌드가 시작된다.

mingw32-make

 

완료 후 아래와 같이 입력한다.

mingw32-make install

이 작업이 끝나면 mingw_build 폴더 안에 파일들이 생성된다.

 

VS Code 설정

extension에서 C/C++ Extension Pack을 설치한다

 

 

파일생성

workspace라는 폴더를 만들어준 후 VS Code에서 file- open folder를 클릭하여 workspace폴더를 열어준다.

 

키보드 F1 -> Tasks Configure Task -> Create tasks.json file from template -> Others를 선택하여 tasks.json을 생성한다.

tasks.json은 아래 내용으로 작성한다.

{
  "version": "2.0.0",
    "runner": "terminal",
    "type": "shell",
    "echoCommand": true,
    "presentation" : { "reveal": "always" },
    "tasks": [
          {
            "label": "compile for C++",
            "command": "cd ${fileDirname} && cmake . -G \"MinGW Makefiles\" && mingw32-make",
            "group": "build",

            "problemMatcher": {
                "fileLocation": [
                    "relative",
                    "${workspaceRoot}"
                ],
                "pattern": {
                    "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning error):\\s+(.*)$",
                    "file": 1,
                    "line": 2,
                    "column": 3,
                    "severity": 4,
                    "message": 5
                }
            }
        },
        {
            "label": "execute",
            "command": "cmd",
            "group": "test",
            "args": [
                "/C", "${fileDirname}\\${workspaceFolderBasename}"
            ]
        }
    ]
}

 

빌드, 실행을 위한 단축키 설정

Keybinding.json에서 아래와 같이 내용을 교체한다.

ctrl+u를 빌드, ctrl+r를 실행으로 설정했으며 변경이 가능하다.

[
    { "key": "ctrl+alt+u", "command": "workbench.action.tasks.build" },
    { "key": "ctrl+alt+r", "command": "workbench.action.tasks.test" }
]

 

폴더에 CMakeLists.txt파일을 생성 후 아래 내용을 작성한다.

set(pathOPENCV C:/opencv-mingw/build)에는 cmake에서 지정한 바이너리 경로

set(LIBOPENCV ${pathOPENCV}/x64/mingw/lib/libopencv_world470.dll.a)의 470은 opencv 버전을 입력한다.

cmake_minimum_required(VERSION 2.8)

set(pathOPENCV D:/OpenCV/mingw_build)
include_directories(${pathOPENCV}/include)
set(LIBOPENCV ${pathOPENCV}/x64/mingw/lib/libopencv_world470.dll.a)

get_filename_component(ProjectId ${CMAKE_CURRENT_LIST_DIR} NAME)
string(REPLACE " " "_" ProjectId ${ProjectId})
project(${ProjectId} C CXX)

set (CMAKE_CXX_STANDARD 11)

file(GLOB SOURCES  *.cpp)
 
add_executable(${PROJECT_NAME} ${SOURCES} )
target_link_libraries( ${PROJECT_NAME} ${LIBOPENCV} )

 

main.cpp파일 생성후 다음과 같이 작성한다. 

#include "opencv2/opencv.hpp"

#include<iostream>
#include<stdio.h>

using namespace std;

int main(int arg, char** argu) {
	cv::Mat img = cv::imread("test.jpg");

	imshow("img", img);
	cv::waitKey(0);

	return 0;
}

이미지를 불러오는 소스코딩이며, 이미지는 테스트 이미지를 사용함.

 

path 파일을 추가한다.

빨간색 밑줄에 커서를 가져가면 하단에 전구모양을 클릭.

include path에  D:\OpenCV\mingw_build\include폴더를 넣어준다.

 

컴파일시 아래의 에러 발생시 Ctrl + Shift + P를 누른 후 아래의 그림과 같이 진행한다..

이후 다시 빌드를 진행하면 정상적으로 빌드 되는것을 확인할수 있다.