(cv3python3) ~/$ python Python 3.4.2 (default, Oct 19 2014, 13:31:11) [GCC 4.9.1] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import cv2 >>> cv2.__version__ '3.1.0' >>>
$ python Python 3.4.2 (default, Oct 19 2014, 13:31:11) [GCC 4.9.1] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import cv2 >>> cv2.__version__ '3.1.0' >>>
시스템에서 파이썬이 두 개 이상 설치되어 있으면 일반적을 Python2.7 버전이 기본 파아썬 이다.
1 2 3 4 5 6 7 8
$ python3 Python 3.4.2 (default, Oct 19 2014, 13:31:11) [GCC 4.9.1] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import cv2 >>> cv2.__version__ '3.1.0-dev' >>>
만약 main module과 extra module을 같이 사용하고 싶다면 아래처럼 설치합니다.
1
> pip install opencv-contrib-python
conda 명령으로 설치하기
Anaconda 3가 설치되어 있다면 명령어 한 줄 입력만으로도 거의 최신 버전(글 작성시 버전 3.6.0)의 Python-OpenCV 라이브러리를 설치할 수 있다:
1
> conda install -c conda-forge opencv
conda-forge에 등록되어 있는 OpenCV 라이브러리에 대한 상세한 설명은 링크를 통해 확인할 수 있습니다. 필요한 경우, python virtualenv를 생성하여 개발환경 패키지를 관리할 수 있다.
OpenCV 3.3의 가장 큰 변화는 Deep Learning in OpenCV 라고 할 수 있겠습니다. 해당 링크에서 Deep Learning 관련 추가된 사항을 확인할 수 있습니다. 이외에 자세한 변경 로그는 OpenCV Change Logs Version:3.3을 참고하시면 되겠습니다.
여담으로 최신 버전 OpenCV 3.3.1 버전 이후에는 JavaScript Interface가 추가되어 인터랙티브 웹-기반 OpenCV 어플리케이션 구현이 공식적으로 가능해졌다고 한다.
$ python Python 3.4.2 (default, Oct 19 2014, 13:31:11) [GCC 4.9.1] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import cv2 >>> cv2.__version__ '3.1.0' >>>
시스템에서 파이썬이 두 개 이상 설치되어 있으면 일반적을 Python2.7 버전이 기본 파아썬 이다.
1 2 3 4 5 6 7 8
$ python3 Python 3.4.2 (default, Oct 19 2014, 13:31:11) [GCC 4.9.1] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import cv2 >>> cv2.__version__ '3.1.0-dev' >>>
Python 가상환경과 Opencv
파이썬 개발시 virtualenv 를 사용한다면 OpenCV 라이브러리를 연결해 줄 필요가 있다. virtualenv 가상환경 생성시 파이썬 라이브러리는 복사가 안된다 그래서 가상환경 생성후에 cv2.so 라이브러리를 링크해줄 필요가 있다.
가상환경에 cv2.so 연결하기
python2 가상환경 cv3python2 가 있고, 여기에 OpenCV 를 사용하려면 다음 같이 cv2.so 라이브러리를 링크해 준다.
1 2
$ cd ~/.virtualenvs/cv3python2/lib/python2.7/site-packages/ $ ln -s /usr/local/lib/python2.7/dist-packages/cv2.so cv2.so
역시 python3 가상환경 cv3python3 가 있다면 python3 라이브러리에 있는 cv2.so 라이브러리를 링크해 준다.
1 2
$ cd ~/.virtualenvs/cv3python3/lib/python3.4/site-packages/ $ ln -s /usr/local/lib/python3.4/dist-packages/cv2.cpython-34m.so cv2.so
또한 cv2.so를 사용하기 위해서 각 가상환경에 numpy를 설치해 준다. Raspberry Pi 2에서 numpy를 pip로 설치할 때 약 10분 이상 소요된다.
(cv3python3) ~/$ python Python 3.4.2 (default, Oct 19 2014, 13:31:11) [GCC 4.9.1] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import cv2 >>> cv2.__version__ '3.1.0' >>>
$:~ $ python3 Python 3.4.2 (default, Oct 19 2014, 13:31:11) [GCC 4.9.1] on linux Type "help", "copyright", "credits" or "license"for more information. >>> import numpy as np >>> np.__version__ '1.10.4' >>>
위 스크립은 OpenCV 3.1.0의 CMake 빌드 버그로, OpenCV 3.0.0 까지 -D INSTALL_C_EXAMPLES=ON으로 빌드했지만 3.1.0에서는 -D INSTALL_C_EXAMPLES=OFF로 해야한다. 또한 opencv_contrib 모듈을 함께 빌드한다면 -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules를 함께 사용한다.
컴파일과 설치
그리고 컴파일 한다.
1 2 3 4 5 6 7 8
~(cv)$ make -j4 # RPi2
... [100%] Built target example_ocl_tvl1_optical_flow
real 173m22.432s user 165m58.970s sys 5m7.060s
싱글로 make시 Raspberry Pi 2 에서 빌드시 약 3시간 소요. -j 옵션을 이용시 45분 이상 절약.
$ ls lib/cv2.so $ ls lib/python3/cv2.cpython-34m.so
이 두 라이브러리가 생성되 있으면 빌드가 제대로 된 것이다.
이제 로컬 시스템에 설치를 한다. 보통 Python2.7과 Python3.4가 함께 설치되 상태일 수 있는데 이 경우 시스템에 기본 Python2.7 환경을 기반으로 설치가 된다.
1 2 3 4 5 6 7 8 9 10
(cv)$ sudo make install ... -- Installing: /usr/local/include/opencv2/contrib/detection_based_tracker.hpp -- Installing: /usr/local/lib/python2.7/dist-packages/cv2.so -- Set runtime path of "/usr/local/lib/python2.7/dist-packages/cv2.so" to "/usr/local/lib" -- Installing: /usr/local/lib/python2.7/dist-packages/cv.py -- Installing: /usr/local/lib/libopencv_stitching.so.2.4.11 ...
(cv)$ sudo ldconfig
설치된 opencv 패키지 버전을 확인한다.
1 2
$ pkg-config --modversion opencv 3.1.0
cv2.so
Python2.7이 함께 설치되어 있는 경우 빌드시 Python3.x의 site-packages에 파일 cv2.cpython-34mu.so 로 설치되어 있다. 이 파일은 실제 파이썬 바인딩으로 실제 파이썬 환경에서 이 라이브러리가 필요하기 하다. Python3 가상환경에서 이 파일 심볼릭 링크를 cv 환경에 cv2.so라는 이름으로 연결해 준다.
파이썬은 관행적으로 opencv 라이브러리를 cv2.so 파일로 표현하고 있다. python3의 경우 라이브러리 이름을 cv2로 링크해 준다.
1 2 3 4
$ cd /usr/local/lib/python3.4/dist-packages $ ls cv2.cpython-34m.so numpy numpy-1.11.2.egg-info $ sudo ln -s cv2.cpython-34m.so cv2.so
이 글은 우분투, 리눅스 박스에서 여러버전의 도구를 관리할 수 있는 update-alternatives 를 다루고 있다.
update-alternative
update-alternative 유틸리티로 리눅스 기본 제공 개발 환경의 gcc, cross compiler용 gcc 등 여러 버전의 gcc를 사용할 수 있게 구성할 수 있다. 이들 버전의 환경을 교체해서 사용하기를 원한다. update-alternative 도구를 사용할 수 있다.
update-alternative 사용
여러 버전의 gcc를 update-alternative를 사용해서 선택적으로 사용할 수 있다. gcc 로 등록된 현재 버전 목록을 질의 한다.
1
$ update-alternatives --query gcc
등록
여기서 사용하는 여러 gcc 버전들을 설치한 후에 다음과 같은 명령어로 등록을 할 수 있다.