참조 블로그 : https://ghostweb.tistory.com/823
현재 구성입니다.
Ubuntu 20.04
OpenCV 3.4.5
Google 에서 "How to install OpenCV in Ubuntu 20.04" 라고 검색을 하시면
여러 웹사이트가 나오는 것을 확인할 수 있습니다.
방법은 크게 2가지고 나눠집니다.
1. Installing OpenCV from the Ubuntu Repository.
2. Installing OpenCV from the Source
우선 첫 번째 방법.
이것은 default Ubuntu 20.04 repositories 에서 바로 다운을 받는 것을 의미합니다.
$ sudo apt update
$ sudo apt install libopencv-dev python3-opencv
그런데 이렇게 해주고 나서, 버전을 확인해보면
$ python3 -c "import cv2; print(cv2.__version__)"
$ 4.2.0
이것은 OpenCV version in the repositories is 4.2
따라서 좋고, 간단한 방법이지만....
버전을 선택하는 것에는 한계가 있어보였습니다.
( $ nano /etc/apt/sources.list 라고 검색하시면 List가 뜰겁니다. 만약에 안쓰면 )
( Ubuntu 20.04 default repository list 라고 검색하시고 추가해주세요. )
( 혹시라도 이 과정에서 OpenCV 다른 버전 ( 3.x.x ) 선택하는 법을 아시는 분은 꼭 알려주세요!
아무튼 저는 위와 같은 방식으로 했기 때문에
현재 OpenCV 4.2 를 가지고 있습니다.
하지만 여러 코드들과의 호환성이 안맞기 때문에,
현재 설치된 것을 지우고, 직접 설치하는 방법으로 하겠습니다.
( Installing OpenCV from the Source )
How to delete OpenCV ?
* 참조 블로그 : https://ghostweb.tistory.com/823
$ sudo apt purge libopencv* python3-opencv
$ sudo apt autoremove -y
$ dpkg --list | grep opencv
$ sudo apt purge libopencv* opencv-data python3-opencv
# 리스트에 나와있는것들 다 삭제
$ sudo apt autoremove -y
#여기서 주의 사항 ! sudo apt autoremove 를 실행시키면, 불필요한 패키지를 삭제해 줍니다.
근데 가령 다른 관련 패키지도 영향을 받을 수 있다는 점을 잊지마세요.
* 예전에 우분투 그래픽 카드 문제 때문에... 다운 받은 패키지가 있었는데, 저 명령어 실행 후, 다시 문제가 발생되더라구요. 그 다음에는 완전해결했지만, 아직도 문제가 있습니다 :)
$ sudo add-apt-repository 'deb http://security.ubuntu.com/ubuntu xenial-security main'
$ sudo apt -y update
$ sudo apt -y upgrade
첫 번째 명령어를 실행하게 되면 다음과 같은 에러가 발생할 수 있습니다.
1. Repository bla bla ~
--> The repository ~ ( 아래 3줄을 참고하시면 됩니다. )
이런 경우에는
Software & Updates -> Other Software -> Unchecked
Close -> Reload
2. Malformed ~ bla bla
안에 들어가서 다음의 줄을 삭제해주면 됩니다. ( 띄어쓰기 오타 뭐 등등 에러가 생기면 다음과 같이 해주세요. )
아무튼 수정이 되면 ?! 다시 명령어를 실행합니다.
그 다음에는 이제 부가 패키지 설치 입니다. ( 블로그 참조 : https://ghostweb.tistory.com/823 )
#빌드, 소스 관련
$ sudo apt install -y build-essential cmake pkg-config git
# 이미지 관련
$ sudo apt install -y libjpeg-dev libtiff5-dev libpng-dev libjasper-dev
# 동영상 및 카메라 관련
$ sudo apt install -y libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxvidcore-dev libx264-dev libxine2-dev libv4l-dev v4l-utils libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
# GUI, qt ( qt Creator -> 정말 많이 씁니다. ), 최적화, Python 3 관련
$ sudo apt install -y libgtk-3-dev libatlas-base-dev libeigen3-dev gfortran
$ sudo apt install -y python3-dev python3-numpy libtbb2 libtbb-dev
# 이때 Qt 버전을 꼭 명심해야 합니다. 자세한 내용은 "OpenCV 3 qt version" 이라고 구글링하시면 됩니다.
$ sudo apt-get -y install qt5-default
이제는 OpenCV Source code를 다운받으면 됩니다.
여기에는 엄청 다양한 방법들이 있는데,
wget 명령을 빼고는 안해봐서 잘 모르겠네요...
일단 저는 다운을 받아보겠습니다.
wget 은 Web Get의 약자로 네트워크 상에서 데이터를 다운로드할 수 있습니다.
여기서
opencv- x.x.x : 기본 소스 코드
opencv_contrib-x.x.x : 추가 기능 소스 코드 입니다. ( Extra Module, 알고리즘, 테스트 중인 신기능을 포함한다고 합니다. )
$ wget -O opencv-3.4.5.zip https://github.com/opencv/opencv/archive/3.4.5.zip
$ wget -O opencv_contrib-3.4.5.zip https://github.com/opencv/opencv_contrib/archive/3.4.5.zip
이 숫자들은 다운을 받고싶으신 버전으로 적으시면 됩니다.
현재 설정은 OpenCV 3.4.5 입니다.
그 다음은 압축을 풀어주는 절차입니다.
$ unzip opencv-3.4.5.zip
$ unzip opencv_contrib-3.4.5.zip
소스 코드를 다운 받고, unzip도 해줬으니,
이제 대망의 소스 코드 빌드 입니다.
$ cd opencv-3.4.5
$ mkdir build &&cd build
$ 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_TESTS=OFF \ -D BUILD_PERF_TESTS=OFF \ -D WITH_QT=ON \ -D WITH_GTK=OFF \ -D WITH_OPENGL=ON \ -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.4.5/modules \ -D WITH_V4L=ON \ -D WITH_FFMPEG=ON \ -D WITH_XINE=ON \ -D BUILD_NEW_PYTHON_SUPPORT=ON \ -D OPENCV_GENERATE_PKGCONFIG=ON ../
# OPENCV_EXTRA_MODULES_PATH : opencv_contrib 모듈의 위치
# Tipppppp -> 우분투에서도 Cmake 프로그램을 사용할 수 있습니다.
# Ubuntu software 에서 Cmake를 검색하시면 바로 설치가 가능합니다.
# 사용법은 검색을 하시면 되고, Windows랑 크게 다르지 않게 보였습니다. ( 시도는 안해봤지만.. )
생성에 성공하면 ?
여기서 파이썬의 정보가 보이는 것이 중요하다고 합니다.
그리고 완료 ! 메시지 확인하면 됩니다.
만약 에러가 뜬다면 / 대부분의 경우
경로 설정의 문제
ON/OFF ( in cmake command ) 의 문제
Library package 의 문제
엄청 많습니다 사실... ( 구글의 힘을 빌리세요 ! )
-- Configuring done
-- Generating done
-- Build files have been written to: /home/ubuntu/opencv/opencv-3.4.5/build
# 제가 참고하고 있는 블로그의 정보를 보면 다음과 같습니다. ( 참고 하세요. )
만약에 Python 2 또는 3 정보가 없을 경우 위의 cmake 명령어에 python 정보를 추가해줘야 돼요.
저는 python2 설치가 안 되어 있어서 안 나오는 듯하네요.
- Cmake에 Python 정보 추가
※ 추가할 Python 버전에 맞게 이름, 경로 변경
-D PYTHON2_INCLUDE_DIR=/usr/include/python2.x \-D PYTHON2_NUMPY_INCLUDE_DIRS=/usr/lib/python2.x/dist-packages/numpy/core/include/ \-D PYTHON2_PACKAGES_PATH=/usr/lib/python2.x/dist-packages \-D PYTHON2_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython2.x.so \
# 사용 가능 코어 확인
$ nproc
$ make -j숫자 ( or make 만 ) 실행을 해줍니다.
-------- 시간 엄청 걸립니다. 0% -> 100% 될 때 까지
# 이제 설치를 해줍니다.
$ sudo make install
# 설치 후, 버전 확인
$ pkg-config --modversion opencv
다음은 예제 파일을 가지고 코드를 실행시키는 과정입니다.
Cmake 란?
간단히 말해서 "Build Tool"이라고 합니다.
이 도구가 없이 IDE를 통해 빌드하고 배포를 하게 되면?
그때부터 큰 재앙이 시작됩니다.
왜냐하면, 그 배포된 파일들은
각각 개발자 PC의 환경에 의해 Version이 결정되기 때문입니다.
따라서, 다양한 운영체재에서 코드를 사용하기 위해서
빌드라는 과정을 거치는데, 그것을 Cmake 라는 아이가 해줍니다.
Git에서 코드를 다운받으면,
CMakeLists.txt 가 포함된 것을 볼 수 있을 겁니다.
거기에는 코드 규칙에 맞게 주요 명령어와 변수들이 정리 되어있으며
때때로 예를 들어 OpenCV Version 정보 등이 들어가있는 것을 확인할 수 있습니다.
$ cmake ..
$ make
# 이렇게 하면 대부분 돌아가는데!
# 혹시나 돌아가지 않는 경우가 생길 수 있습니다.
# CMakeLists.txt 파일을 들여다 보면 그 해답을 얻을 수 있습니다.
# 또한 src ( source folder ) / build 등 폴더가 제대로 되어있는지를 확인하셔야 합니다.
댓글