카테고리

asm (27) bootloader_x86_grub (1) C (92) compile (11) config (76) CPP (13) CSS (1) debugging (7) gimp (1) Go (1) html (1) Java (1) JavaScript (1) kernel (19) LibreOffice (3) Linux system progamming (21) MFC (1) opencv (4) OpenGL (1) PHP (1) Python (4) qemu (29) shell (3) socket (7) troubleshooting (2) ubuntu18.04 (2) windows (1)

2018/12/23

ubuntu 14.04 python3.4 + OpenCV 3.0 개발 환경 구축 및 테스트

우분투 OpenCV 3.0 및 Python 3.4 설치

Ubuntu 14.04

OpenCV 3.0 버전 Python 3 이상과 호환.
Python 3.4 버전과 Python2.7 버전은 설치 방법은 다름.

1 단계 : 필수 구성 요소 설치
터미널 열기 ctrl + art + t
sudo apt-get update
sudo apt-get upgrade

개발 도구 설치
sudo apt-get install build-essential cmake git pkg-config

pkg-config: 패키지 설정 파일.
git : GitHub OpenCV 프로젝트 사이트 소스 코드 다운로드
cmake: 빌드 구성

OpenCV는 JPEG, PNG, TIFF등 디스크에 있는 이미지 파일을 로드 할 수 있다.
디스크에 있는 이미지 파일을 로드 하려면 이미지 I/O 패키지가 필요함.
sudo apt-get install libjpeg8-dev libtiff4-dev libjasper-dev libpng12-dev

로드 된 후 모니터 화면에 보여주기 위해서는 highgui 모듈, GUI에 의존하는 GTK 개발 라이브러리 필요.
sudo apt-get install libgtk2.0-dev

OpenCV 비디오 스트림 처리, 개별 프레임 접근 하기 위해 다음 라이브러리 설치
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev

OpenCV 내부의 다양한 루틴 최적화 라이브러리 설치
sudo apt-get install libatlas-base-dev gfortran

2 단계: Python 설치 1
파이썬 패키기 관린 pip 설치
wget https://bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py

https://virtualenv.pypa.io/en/latest/ 및 https://virtualenvwrapper.readthedocs.io/en/latest/ 를 설치한다.
이 두개의 패키지는 별도의 파이썬 버전과 개발 환경을 생성할 수 있게 한다.
sudo pip install virtualenv virtualenvwrapper

사용자 환경 설정.
vi /home/username/.bashrc
# virtualenv 및 virtualenvwrapper
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
:wq
로그아웃 또는 재부팅, 아니면 source /home/username/.bashrc

OpenCv 3.0 + Python 3.4 비전 개발을 위해, 가상 cv 환경 구축
mkvirtualenv cv

2 단계: Python 설치 2
python 3.4 개발도구 설치
sudo apt-get install python3.4-dev

OpenCV 이미지 다차원 처리 NumPy 배열로 표현한다.
가상 개발 환경 CV에 설치 한다. 개발의 편의를 위해 imutils 설치
pip install numpy

cash 디렉토리 문제 발생 지우고 다시 설치
sudo rm -rf ~/.cache/pip/
pip install numpy

3 단계: python 3.4 + OpenCV 3.0 빌드
opencv 3.0 다운로드

cd ~
git clone https://github.com/Itseez/opencv.git
cd opencv
git checkout 3.0.0

opencv_contrib repo 설치, 설치 안 할 경우 표준 키보드의 키 위치를 감지 및 OpenCV 2.4.x 버전에서 사용한 SIFT, SURF 접근 할 수 없다.
또한 자연 스러운 이미지 텍스트 감지와 같은 OpenCV 3.0 새로운 기능을 사용하지 못함.
cd ~
git clone https://github.com/Itseez/opencv_contrib.git
cd opencv_contrib
git checkout 3.0.0

동일 버전 설이 3.0.0

빌드 설정:
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 ..

 -D INSTALL_C_EXAMPLES=OFF (보다는 ON).이 스위치를 켜 놓으면 오류가 발생할 수있는 OpenCV v3.1.0 CMake 빌드 스크립트에 버그가 있다.
 이 스위치를 off로 설정하면 CMake가 문제없이 실행됩니다.

CMAKE 출력 파일 확인
Cmake 파일이 파이썬3 버전 인터프리터 등록 확인.
Python 3:
Interpreter : /home/username/.virtualevns/cv/bin/python3.4 (ver 3.4)
Libraries : /usr/lib/x86_64-linux-gnu/libpython3.4~~~
numpy: /home/username/.virualenvs/cv/lib/python3.4/site.packages/numpy/core~~~~
packages path: lib/python3.4/site-packages

컴파일
make -j4

컴파일 속도를 높이려면 현재 사용되는 컴퓨터의 프로세서 코어수를 넣어준다.

설치
sudo make install
sudo ldconfig

4 단계
python3.4 설치 위치
/usr/local/lib/python3.4/site-packages

가상 개발 환경으로 심볼릭 링크
cd ~/.virtualenvs/cv/lib/python3.4/site-packages/
ln -s /usr/local/lib/python3.4/site-packages/cv2.cpython-34m.so cv2.so

심볼릭 링크가 잘 생성 되는지 확인한다. 만약 링크가 생성이 안되면 파일썬에서 OpenCV 호출 하지 못한다.

5 단계
python3.4 바인딩을 사용하여 OpenCV 3.0 설치 완료

가상 개발 환경 설치 확인

workon cv
python
>>> import cv2
>>> cv2.__version__
'3.0.0'

6 단계
테스트
색상이 있는 사진 한장 준비.

pip install imutils

vi find_image.py
# 필요한 패키지 가지고 오기
import numpy as np
import imutils
import cv2

# 이미지 로드
image = cv2.imread("test.jpg")

# 빨간색 이미지 찾기
upper = np.array([65, 65, 255])
lower = np.array([0, 0, 200])
mask = cv2.inRange(image, lower, upper)

# 마스크 된 이미지에서 윤곽선을 찾고 가장 큰 것을 유지
cnts = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL,
cv2.CHAIN_APPROX_SIMPLE)
cnts = imutils.grab_contours(cnts)
c = max(cnts, key=cv2.contourArea)

# 윤곽율 근사 값
peri = cv2.arcLength(c, True)
approx = cv2.approxPolyDP(c, 0.05 * peri, True)

# 빨간 색을 둘러싼 녹색 테두리 상자 그리기
cv2.drawContours(image, [approx], -1, (0, 255, 0), 4)
cv2.imshow("Image", image)
cv2.waitKey(0)

실행
python find_image.py

댓글 없음:

댓글 쓰기