검색결과 리스트
글
OpenCV 최신 버전에서 Python으로 SIFT, SURF 사용하기(Install OpenCV 3.0 in Ubuntu)
최신 버전의 OpenCV 라이브러리를 사용하여 Python 환경에서 SIFT 알고리즘을 수행하려 해보았더니 아래와 같은 화면이 출력됩니다.
OpenCV 3.0.0 버전 이후에는 이전 버전에서 사용할 수 있었던 일부 라이브러리의 사용이 제한되어 있습니다. 자주 사용되는 SIFT와 SURF 또한 이에 해당되어 OpenCV 최신 버전을 그대로 설치하면 이를 바로 사용할 수 없습니다. 최신 버전의 OpenCV에서 이를 사용하기 위해서는 opencv_contrib을 추가적으로 설정해 주어야 합니다.
1. OpenCV 최신 버전을 설치하기 위해 아래의 프로그램들을 설치합니다.
$ sudo apt-get install build-essential cmake git pkg-config libjpeg8-dev libtiff4-dev libjasper-dev libpng12-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libatlas-base-dev gfortran python2.7-dev
2. Python 2.X 버전을 설치합니다. 3.X 버전의 경우 동작이 되지 않는 경우가 종종 발생한다는 점을 유의하셔야 합니다. apt-get에서는 2.X 버전을 제공합니다.
$sudo apt-get install python
3. Python 패키지 매니저인 pip를 설치합니다.
$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python get-pip.py
4. 기존 Python OpenCV의 라이브러리와는 별도로 동작할 수 있게 하는 virtualenv와 virtualenvwrapper를 설치합니다.
$ sudo pip install virtualenv virtualenvwrapper
5. 설치한 virtualenv와 virtualenvwrapper가 항상 수행될 수 있도록 bash를 수정합니다.
$ vi ~/.bashrc
6. 수정한 bashrc를 바로 적용합니다.
$source ~/.bashrc
7. 독립된 별도의 Python OpenCV 라이브러리 환경을 만들기 위한 가상 환경을 생성합니다.
$mkvirtualenv cv
8. 최신 버전의 OpenCV 버전을 다운로드 받아 OpenCV 폴더에 압축을 풉니다.
http://opencv.org/downloads.html
또는 Github를 통해 최신 버전의 OpenCV 소스코드를 다운로드 받습니다.
$ cd ~
$ git clone https://github.com/Itseez/opencv.git
$ cd opencv
$ git checkout 3.0.0
9. 이전 버전의 OpenCV 라이브러리를 사용할 수 있도록 해주는 opencv_contrib를 다운로드 받습니다.
$ cd ~
$ git clone https://github.com/Itseez/opencv_contrib.git
$ cd opencv_contrib
$ git checkout 3.0.0
10. 이제 본격적으로 OpenCV 라이브러리를 설치해 보도록 합니다. 아래와 같이 cmake를 통해 Makefile을 구성합니다. 이 과정에서 위에서 받은 opencv_contrib을 설정해줍니다.
$ cd ~/opencv
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D BUILD_EXAMPLES=ON ..
11. 구성요소를 컴파일한 다음 자신의 환경에서 만든 OpenCV를 설치합니다.
$make -j4
$sudo make install
$sudo make ldconfig
12. OpenCV 설치가 완료되면 이를 Python에서 사용할 수 있도록 Sym-link를 추가해 줍니다.
$ cd ~/.virtualenvs/cv/lib/python2.7/site-packages/
$ ln -s /usr/local/lib/python2.7/site-packages/cv2.so cv2.so
13. 이로서 OpenCV의 설치가 완료되었습니다. cv2 라이브러리를 불러오는 것으로 실행을 확인해 봅니다.
>>> import cv2
>>> cv2.__version__
위와 같이 자신이 설치한 OpenCV 버전이 나오면 설치는 성공한 것입니다! 이제 SIFT가 실행이 잘 되는지 확인해 보도록 합니다!
아래 이미지에 대한 SIFT 연산을 수행하는 프로그램을 작성해 보겠습니다.
1 2 3 4 5 6 7 8 9 10 11 | import cv2 import numpy as np img = cv2.imread('elecs.png') gray= cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) sift = cv2.xfeatures2d.SIFT_create() kp = sift.detect(gray,None) cv2.drawKeypoints(gray,kp,img,flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS) cv2.imwrite('sift_elecs.jpg',img) | cs |
- 결과
-참고자료
http://www.pyimagesearch.com/2015/06/22/install-opencv-3-0-and-python-2-7-on-ubuntu/
'프로그래밍 팁' 카테고리의 다른 글
IP 주소를 통해 위치 정보 얻기(IP-API.com) (0) | 2016.11.09 |
---|---|
Fedora에 이전 버전의 OpenJDK 설치하기(Install OpenJDK 7 in Fedora 23) (0) | 2015.12.22 |
[JAVA] 같은 공유기에 접속중인 기기의 IP 주소 확인하는방법 (0) | 2015.10.15 |
[JAVA] Socket 서버 구현시 안전하게 SocketServer를 종료하는 방법 (3) | 2015.10.14 |
[C/C++]thread 조건변수 다루기 - pthread_cond_broadcast() (0) | 2015.09.01 |