728x90

opencv를 간단히 우분투 python 환경에서 사용한다면 

pip3 install opencv-python
pip3 install opencv-contrib-python

을 이용해서 설치를 해주면 되지만, 파이썬 환경에서 사용할 때만 사용가능하다는 단점이 있다.

예를 들어 yolo같은 딥러닝 툴을 사용해야 할 때는 nonfree 기반의 모듈을 사용해야하므로 밑의 방식대로 설치를 진행하면 된다.

 

* python환경만 사용하실거면 위의 pip로 설치만 하면된다.

 

1. 설치된 opencv를 제거

 

전에 설치했던 OpenCV가 있다면 새로 설치하는 OpenCV 4.4.0 버전이 제대로 동작하지 않기 때문에 제거해주어야 합니다.

 

아래처럼 보이면 OpenCV가 설치안되어 있는 상태입니다. 다음 단계로 넘어가도  됩니다.

 

vlsi2141@vlsi2141-B150M-DS3H::~$ pkg-config --modversion opencv
Package opencv was not found in the pkg-config search path.
Perhaps you should add the directory containing `opencv.pc'
to the PKG_CONFIG_PATH environment variable
No package 'opencv' found


OpenCV 2.4대 버전이 설치되어 있는 경우에는 OpenCV  2.4 버전이 출력됩니다.

 

vlsi2141@vlsi2141-B150M-DS3H::~$ pkg-config --modversion opencv
2.4.9.1


다음 명령으로 OpenCV 라이브러리 설정 파일을 포함해서 기존에 설치된 OpenCV 패키지를 삭제하고 진행해야 합니다. 

$ sudo apt-get purge  libopencv* python-opencv
$ sudo apt-get autoremove


OpenCV 3 버전이 설치되어 있다면 다음처럼 보입니다.

 

vlsi2141@vlsi2141-B150M-DS3H::~$ pkg-config --modversion opencv
3.4.2


다음 명령으로 기존에 설치된 opencv 라이브러리를 삭제합니다. 파일을 확인해서 문제 없는 파일만 y를 눌러주면 삭제가 됩니다. 

아래 명령에서 rm 다음에 있는 -i를 제거하면 물어보지 않고 전부 삭제합니다. 

vlsi2141@vlsi2141-B150M-DS3H:~$  sudo find /usr/local/ -name "*opencv*" -exec rm -i {} \;

 

2. 패키지 업데이트

 

ubuntu 저장소로부터 패키지 리스트를 업데이트를하고, 새로운 버전이 있으면 업그레이드를 진행하기 위해 밑에 명령어들을 터미널창에서 입력해줍니다.

sudo apt-get update
sudo apt-get upgrade

 

 

3. OpenCV 컴파일을 하기전에 필요한 패키지들 설치

#build-essential 패키지에는 C/C++ 컴파일러와 관련 라이브러리, make 같은 도구들이 포함되어 있습니다.
#cmake는 컴파일 옵션이나 빌드된 라이브러리에 포함시킬 OpenCV 모듈 설정등을 위해 필요합니다. 

sudo apt-get install build-essential cmake

#pkg-config는 프로그램 컴파일 및 링크시 필요한 라이브러리에 대한 정보를 메타파일(확장자가 .pc 인 파일)로부터 가져오는데 사용됩니다. 
#터미널에서 특정 라이브러리를 사용한 소스코드를 컴파일시 필요한 헤더파일 및 라이브러리 위치 및 옵션을 추가하는데 도움이 됩니다.  

sudo apt-get install pkg-config

#특정 포맷의 이미지 파일을 불러오거나 저장하기 위해 필요한 패키지들입니다.

sudo apt-get install libjpeg-dev libtiff5-dev libpng-dev

#특정 코덱의 비디오 파일을 읽어오거나 저장하기 위해 필요한 패키지들입니다.

sudo apt-get install ffmpeg libavcodec-dev libavformat-dev libswscale-dev libxvidcore-dev libx264-dev libxine2-dev

#Video4Linux 패키지는 리눅스에서 웹캠으로부터 실시간 비디오 캡처를 지원하기 위한 디바이스 드라이버와 API를 포함하고 있습니다. 

sudo apt-get install libv4l-dev v4l-utils

#GStreamer는 비디오 스트리밍을 위한 라이브러리입니다. 

sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev

#OpenCV에서는 highgui 모듈을 사용하여 자체적으로 윈도우 생성하여 이미지나 비디오를 보여줄 수 있습니다. 
#윈도우 생성 등의 GUI를 위해 gtk 또는 qt를 선택해서 사용가능합니다.  여기서는 gtk2를 지정해주었습니다.
#그외 선택 가능한 패키지는 다음과 같습니다. = libgtk2.0-dev,libqt4-dev,libqt5-dev

sudo apt-get install libgtk-3-dev

#OpenGL 지원하기 위해 필요한 라이브러리입니다.

sudo apt-get install mesa-utils libgl1-mesa-dri libgtkgl2.0-dev libgtkglext1-dev

#OpenCV 최적화를 위해 사용되는 라이브러리들입니다.

sudo apt-get install libatlas-base-dev gfortran libeigen3-dev

#python3-dev 패키지는 OpenCV-Python 바인딩을 위해 필요한 패키지들입니다. 
#Numpy는 매트릭스 연산등을 빠르게 처리할 수 있어서 OpenCV에서 사용됩니다. 
#저는 20.04LTS 버전이라 파이썬 2.x버전이 존재하지않아서 python2.7-dev,python-numpy 는 설치를 스킵했습니다.

sudo apt-get install python3-dev python3-numpy

 

 

4. OpenCV 설정 및 컴파일, 설치

 

일단 소스코드를 다운받을 디렉토리를 생성하고 해당 디렉토리로 이동한다.

mkdir opencv
cd opencv

 

opencv 4.4.0 version 소스코드를 다운받고 압축을 풀어준다.

wget -O opencv.zip https://github.com/opencv/opencv/archive/4.4.0.zip
unzip opencv.zip

opencv 4.4.0 contrib 소스코드를 다운받고 압축을 풀어준다.

wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.4.0.zip
unzip opencv_contrib.zip

◎ 압축을 풀면 두개의 디렉토리가 생성이 될 것이고, 생성이 만약 안되었다면 다시 압축을 풀면된다.

 

opencv-4.4.0 디렉토리로 이동하고 build 디렉토리를 생성 후 해당 디렉토리로 이동합니다.(컴파일은 build 디렉토리에서 진행)

cd opencv-4.4.0
mkdir build
cd build

cmake를 이용해서 opencv 컴파일 설정을 한다.

 

cmake -D CMAKE_BUILD_TYPE=RELEASE 
-D CMAKE_INSTALL_PREFIX=/usr/local 
-D WITH_TBB=OFF 
-D WITH_IPP=OFF 
-D WITH_1394=OFF 
-D BUILD_WITH_DEBUG_INFO=OFF 
-D BUILD_DOCS=OFF 
-D INSTALL_C_EXAMPLES=ON 
-D INSTALL_PYTHON_EXAMPLES=ON 
-D BUILD_EXAMPLES=OFF 
-D BUILD_PACKAGE=OFF 
-D BUILD_TESTS=OFF 
-D BUILD_PERF_TESTS=OFF 
-D WITH_QT=OFF 
-D WITH_GTK=ON 
-D WITH_OPENGL=ON 
-D BUILD_opencv_python3=ON 
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.4.0/modules 
-D WITH_V4L=ON  
-D WITH_FFMPEG=ON 
-D WITH_XINE=ON 
-D OPENCV_ENABLE_NONFREE=ON 
-D BUILD_NEW_PYTHON_SUPPORT=ON 
-D OPENCV_SKIP_PYTHON_LOADER=ON 
-D OPENCV_GENERATE_PKGCONFIG=ON ../

만약에 python3 라이브러리 항목이 컴파일 완료 후 존재하지 않는다면 python3의 PATH를 수동으로 설정해 주어야한다.

-D PYTHON3_INCLUDE_DIR=/usr/include/python3.8 
-D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3/dist-packages/numpy/core/include/ 
-D PYTHON3_PACKAGES_PATH=/usr/lib/python3/dist-packages 
-D PYTHON3_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.8.so ../

#위의 명령어는 컴파일 과정에서 python3가 적용이 안되었을 때만 사용합니다. 경로는 컴퓨터마다 다르기에 
#본인에게 맞는 경로로 설정해주세요

 

이제 make 명령을 사용해서 컴파일을 하면됩니다.

time make -j$(nproc)

 

위의 명령어로 컴파일을 성공할 시 진행된 시간도 표시가 됩니다.

이제 컴파일 후 본격적인 설치를 진행합니다.

sudo make install

설치가 완료되면 /usr/local/lib을 포함하는 설정파일이 있는지 확인해야 하므로 밑의 명령어를 쳐줍니다.

cat /etc/ld.so.conf.d/*

만약 없다면 밑에 명령어로 수동설정 해줍니다.

sudo sh -c 'echo '/usr/local/lib' > /etc/ld.so.conf.d/opencv.conf'

이제 opencv설치가 끝났고 opencv라이브러리를 찾을 수 있도록 명령어를 마지막으로 쳐주면 설치가 끝납니다.

sudo ldconfig

 

설치 후 확인으로 예제파일들을 검색해서 받아서 진행했을때 정상적으로 작동하면 설치가 완료 된 겁니다. 작동이 안된다면 위의 과정을 반복하시면 됩니다.

728x90

+ Recent posts