다음 프로젝트를 위해 리눅스 환경에서 OpenCV를 설치하고 사용하기 위한 설정을 진행한다. 필자의 환경은 WSL을 이용하며, VScode에서 WSL을 연동해 사용한다.
우선 OpenCV를 사용하기 위한 필수 패키지를 설치한다.
sudo apt install -y build-essential cmake git unzip pkg-config \
libjpeg-dev libpng-dev libtiff-dev \
libavcodec-dev libavformat-dev libswscale-dev \
libv4l-dev libxvidcore-dev libx264-dev \
libgtk-3-dev libatlas-base-dev gfortran \
python3-dev python3-pip
OpenCV 소스코드를 다운로드한다.
git clone -b 4.x https://github.com/opencv/opencv.git
git clone -b 4.x https://github.com/opencv/opencv_contrib.git
두 명령어를 터미널에서 실행해 OpenCV 및 OpenCV Contrib를 다운로드한다.
-b 4.x는 OpenCV 4.x 최신 release 버전을 의미한다.
다음으로 OpenCV 빌드 디렉터리를 생성한다.
mkdir -p opencv/build
cd opencv/build
OpenCV와 추가 모듈(opencv_contrib)을 포함하여 빌드를 설정한다.
cmake -D CMAKE_BUILD_TYPE=Release \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
-D WITH_CUDA=OFF \
-D BUILD_DOCS=OFF \
-D BUILD_TESTS=OFF \
-D BUILD_EXAMPLES=OFF \
-D BUILD_PACKAGE=ON \
..
다음 명령어를 통해 빌드와 설치를 진행한다. 빌드에는 몇분 가량 걸린다.
make -j$(nproc)
$(nproc)는 사용 가능한 CPU 코어 수를 자동으로 계산하여 병렬 빌드를 수행한다.
sudo make install
sudo ldconfig
설치가 완료되면 다음 명령어로 버전을 확인한다.
pkg-config --modversion opencv4
만약 pkg-config가 설치되어 있지 않다면 설치해준다.
sudo apt update
sudo apt install pkg-config
pkg-config가 OpenCV를 찾지 못하는 문제가 발생하였는데, 드물게 이런 경우가 발생하는 것 같다. 필자의 경우 해결방법을 찾다가 직접 opencv.pc를 생성해주었다.
mkdir -p /usr/local/lib/pkgconfig
sudo nano /usr/local/lib/pkgconfig/opencv4.pc
위 두 명령어를 통해 opencv4.cp 파일을 생성한다.
그리고 파일에 다음 내용을 복사하여 저장한다.
prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir_old=${prefix}/include/opencv
includedir_new=${prefix}/include/opencv4
Name: OpenCV
Description: Open Source Computer Vision Library
Version: 4.0.0
Libs: -L${libdir} -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_imgcodecs
Cflags: -I${includedir_new}
복사 후 저장 단축키 Ctrl + O, Enter, Ctrl + X
그리고 다음과 같이 환경변수를 설정해준다.
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
echo 'export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH' >> ~/.bashrc
source ~/.bashrc
설정 완료 후에 다음 명령어들을 통해 설정을 확인한다.
pkg-config --modversion opencv4
ls /usr/local/include/opencv4
ls /usr/local/lib | grep opencv
무사히 설정이 완료되었다. 간단한 테스트 코드를 통해 확인해본다.
#include <opencv2/opencv.hpp>
#include <iostream>
int main()
{
// 이미지 생성 및 텍스트 추가
cv::Mat img = cv::Mat::zeros(300, 300, CV_8UC3);
cv::putText(img, "Hello OpenCV!", cv::Point(50, 150),
cv::FONT_HERSHEY_SIMPLEX, 1, cv::Scalar(255, 255, 255), 2);
// 결과 창에 이미지 표시
cv::imshow("Test Window", img);
// 사용자 키 입력 대기
cv::waitKey(0);
return 0;
}
CmakeList.txt
cmake_minimum_required(VERSION 3.15)
# 프로젝트 이름
project(OpenCV_Test)
# C++ 표준 설정
set(CMAKE_CXX_STANDARD 17)
# OpenCV 설정
find_package(OpenCV REQUIRED)
# 실행 파일 설정
add_executable(main src/main.cpp)
# OpenCV 라이브러리 연결
target_link_libraries(main ${OpenCV_LIBS})
cmake ..
cmake ..는 CMakeLists.txt 파일을 읽고, 프로젝트 빌드를 위한 설정 파일(Makefile)을 생성한다.
make
make는 CMake에 의해 생성된 Makefile을 읽고, 그 지시에 따라 소스 코드를 컴파일하고 링크한다. 생성된 실행 파일을 실행하면, 다음과 같이 OpenCV가 정상적으로 동작하는 것을 확인할 수 있다.
추가로, VScode에서 WSL을 사용할 경우 다음과 같이 IntelliSense를 재설정해주어야 한다.
Ctrl + Shift + P를 눌러 Command Palette를 열고, C/C++: Edit Configurations (JSON)를 검색하여 실행 및 아래 내용 붙여넣기
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"/usr/local/include/opencv4"
],
"defines": [],
"compilerPath": "/usr/bin/gcc",
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "linux-gcc-x64"
}
],
"version": 4
}
이는 VSCode가 WSL 내에서의 작업을 지원하지만, IntelliSense는 별도의 헤더 파일 경로와 컴파일러 설정을 참조하기 때문이다. 그래서 VSCode는 오류를 감지하지만, WSL 내부에서 CMake를 사용해 빌드 및 실행하는 것은 정상적으로 동작하므로, WSL 환경 자체에는 문제가 없다.
'Linux' 카테고리의 다른 글
[Linux] PyTorch 모델을 C++ 포팅으로 사용하기 - ONNX Runtime 설치 (0) | 2025.02.11 |
---|---|
[VMware][OpenCV] Ubuntu 카메라 사용 설정 (1) | 2025.02.05 |
[VMware][OpenCV] Ubuntu SSH 연결 시 GUI 사용 설정 (0) | 2025.02.05 |
[PyTorch] WSL에서 CUDA, cuDNN, PyTorch 설치 및 사용 (0) | 2025.01.27 |
[Linux] Linux Terminal on Window - WSL (0) | 2025.01.12 |