WSL에서 OpenCV 컴파일하기

2020. 8. 20. 10:53Data & AI/ComputerVision

WSL에서 OpenCV 컴파일하기

개발 환경

  • CPU : i7-782-HQ
  • GPU : NVIDIA GeForce 940MX
  • Memory : 16GB
  • Ubuntu 20.04 (WSL)
  • CUDA 10.0
  • cuDNN 7.6.5

OpenCV 설치하기

준비과정

먼저 시스템 업데이트를 하자

sudo apt-get update
sudo apt-get upgrade

OpenCV를 설치하기 앞서, 필요한 라이브러리들을 먼저 설치해야 한다.

  • 설치에 필요한 기본적인 라이브러리
sudo apt install build-essential cmake pkg-config unzip yasm git checkinstall
  • 이미지 입출력 관련 라이브러리
sudo apt install libjpeg-dev libpng-dev libtiff-dev
  • Video/Audio 관련 라이브러리
sudo apt install libavcodec-dev libavformat-dev libswscale-dev libavresample-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libxvidcore-dev x264 libx264-dev libfaac-dev libmp3lame-dev libtheora-dev libfaac-dev libmp3lame-dev libvorbis-dev
  • OpenCore 라이브러리 (Adaptive Multi Rate Narrow Band (AMRNB), Wide Band (AMRWB) speech codec)
sudo apt-get install libopencore-amrnb-dev libopencore-amrwb-dev
  • Cameras programming interface 라이브러리
sudo apt-get install libdc1394-22 libdc1394-22-dev libxine2-dev libv4l-dev v4l-utils 
cd /usr/include/linux 
sudo ln -s -f ../libv4l1-videodev.h videodev.h 
cd ~
  • GTK lib for the graphical user functionalites coming from OpenCV highgui module
sudo apt-get install libgtk-3-dev
  • Python libraries for python3
sudo apt-get install python3-dev python3-pip 
sudo -H pip3 install -U pip numpy 
sudo apt install python3-testresources
  • Parallelism library C++ for CPU
sudo apt-get install libtbb-dev
  • Optimization libraries for OpenCV
sudo apt-get install libatlas-base-dev gfortran
  • Optional libraries
sudo apt-get install libprotobuf-dev protobuf-compiler libgoogle-glog-dev libgflags-dev libgphoto2-dev libeigen3-dev libhdf5-dev doxygen

OpenCV 설치

이렇게 다 설치하고 나면 OpenCV를 설치할 수 있다. 일단 먼저 다운부터 받자.

cd ~
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.2.0.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.2.0.zip
unzip opencv.zip
unzip opencv_contrib.zip

일단 Virtualenv 환경을 만들자

sudo pip install virtualenv virtualenvwrapper
sudo rm -rf ~/.cache/pip

그리고 vi ~/.bashrc명령어를 이용해 .bashrc에 아래 두줄을 추가하자

export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3

위의 커맨드를 터미널에서 실행하고 source /usr/local/bin/virtualenvwrapper.sh으로 적용해줘도 되지만, 재부팅 시 다시 해야 하니 그냥 .bashrc에 추가하자

그리고 Virtualenv를 실행한다.

mkvirtualenv cv -p python3
pip install numpy

이제 opencv-4.2.0 폴더로 이동해서 빌드를 시작한다. (엄청 오래 걸린다.....)

cd opencv-4.2.0
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_C_COMPILER=/usr/bin/gcc-7 \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D WITH_TBB=ON \
-D BUILD_opencv_cudacodec=OFF \
-D ENABLE_FAST_MATH=1 \
-D CUDA_FAST_MATH=1 \
-D WITH_CUDA=ON \
-D WITH_CUBLAS=1 \
-D WITH_V4L=ON \
-D WITH_QT=OFF \
-D WITH_OPENGL=ON \
-D WITH_GSTREAMER=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D OPENCV_PC_FILE_NAME=opencv.pc \
-D OPENCV_ENABLE_NONFREE=ON \
-D OPENCV_PYTHON3_INSTALL_PATH=~/.virtualenvs/cv/lib/python3.8/site-packages \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-4.2.0/modules \
-D PYTHON_EXECUTABLE=~/.virtualenvs/cv/bin/python \
-D BUILD_EXAMPLES=ON \
-D WITH_CUDNN=ON \
-D OPENCV_DNN_CUDA=ON \
-D CUDNN_LIBRARY=/usr/local/cuda/lib64/libcudnn.so.7.6.5 \
-D CUDNN_INCLUDE_DIR=/usr/local/cuda/include \
-D CUDA_ARCH_BIN=7.5 .. 

컴파일 과정에서 gcc 관련 에러가 발생한다면 /usr/bin/에서 gcc버전을 확인하고 없으면 일단 버전별로 다 설치해보자

sudo apt install gcc-7 g++-7 gcc-8 g++-8 gcc-9 g++-9

이제 마지막이다. (하지만 이건 진

~

짜 오래 걸린다.)

nproc
make -j8
sudo make install

nproc을 통해 CPU의 코어 수를 확인한다.

그리고 CPU Core 개수에 따라 -j 뒤에 붙는 숫자를 조절해주어야 한다. (4 Core면 4, 8 Core면 8)

진짜 마지막으로 설치된 라이브러리를 환경변수로 설정해주면 끝난다

sudo /bin/bash -c 'echo "/usr/local/lib" >> /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig

Refrences

'Data & AI > ComputerVision' 카테고리의 다른 글

이미지에 OCR 결과물 출력하기  (0) 2020.08.31