04-28 08:23
Notice
Recent Posts
Recent Comments
관리 메뉴

Scientific Computing & Data Science

[Programming / OpenCV] Windows 환경에 Python-OpenCV 설치하기 본문

Programming/OpenCV

[Programming / OpenCV] Windows 환경에 Python-OpenCV 설치하기

cinema4dr12 2017. 10. 28. 15:18

Written by Geol Choi | Oct


이번 포스팅은 Windows의 Python 환경에서 Open Source Computer Vision Library인 OpenCV 개발환경을 구축하는 방법에 대해 알아보겠습니다.


이 포스팅에 설명된 방법 외에도 다양한 방법들이 존재하지만 가급적 쉽게 따라할 수 있는 방식을 소개하도록 하겠습니다.

1. Python 2.7 환경에 구축하기

Python 2.7 환경에 구축하는 방법은 가장 간단한 방법이며, 다음과 같은 절차로 진행합니다:


(1) OpenCV 공식사이트(https://opencv.org)에서 원하는 버전의 OpenCV Windows Package를 다운받아 설치합니다.


(2) 설치는 사실 상 압축파일을 해제하는 것에 불과한데, 설치된 경로로 이동하면, [build]와 [sources] 두 개의 폴더를 보실 수 있습니다. 이 중 [build/python] 폴더 내의 자신의 Windows OS Platform(32/64bt) 와 일치하는 폴더 내의 "cv2.pyd" 파일을 python 2.7이 설치되어 있는 경로의 "Lib/site-packages\"에 복사합니다.


만약 일반적으로 python 2.7이 설치되어 있는 경로인 "C:\Python27\"의 경우, "C:\Python27\Lib\site-packages\"에 "cv2.pyd" 파일을 복사하면 되겠습니다.


설치가 제대로 되었는지 확인하기 위해 python 2.7 (command line)에서 다음과 같이 cv2 라이브러리를 임포트(import) 해봅니다:


>>> import cv2


만약 특별한 에러 메시지없이 다음 명령 프롬프트로 넘어가면 라이브러리가 잘 임포트 된 것입니다.

2. Python 3.6 환경에 구축하기

1. pip 명령으로 설치하기

현재 자신의 컴퓨터에 python 3.6 기본 패키지가 설치되어 있는 경우, "Unofficial Windows Binaries for Python Extension Packages" 사이트에서 원하는 버전의 python-opencv 패키지를 다운로드 합니다.


가령, "opencv_python‑3.3.1‑cp36‑cp36m‑win_amd64.whl"를 "c:\downloads" 경로에 다운로드 하였다면,


C:\Users\gchoi\AppData\Local\Programs\Python\Python35\Scripts> pip install c:\downloads\opencv_python‑3.3.1‑cp36‑cp36m‑win_amd64.whl


의 형식으로 명령을 실행합니다.


참고로, "C:\Users\gchoi\AppData\Local\Programs\Python\Python36\Scripts" 경로는 python 3.6의 pip.exe 파일이 존재하는 위치이며, 환경변수의 PATH에 해당 경로가 등록되어 있다면 굳이 위의 경로로 이동할 필요없이 pip 명령을 실행하면 됩니다.


2. conda 명령으로 설치하기

하지만, 위의 과정은 소스 파일을 다운로드해야 하는 등 꽤 번거롭습니다. 자신의 컴퓨터에 Anaconda 3가 설치되어 있다면 명령어 한 줄 입력만으로도 거의 최신 버전(이 글 작성 시 버전 3.3.0)의 Python-OpenCV 라이브러리를 설치할 수 있습니다:


> 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 어플리케이션 구현이 공식적으로 가능해졌다고 하는군요. 얼렁 빌드해 보고 이에 대한 튜토리얼을 곧 포스팅하겠습니다. :)

3. 예제 실행

Python-OpenCV 개발환경 구축 기념으로 보너스 이미지를 표시하는 예제 코드를 하나 올립니다.


[Image: "landscape.jpg"]

Image from https://petapixel.com/2017/09/08/10-tips-using-extreme-wide-angle-lenses-landscape-photography/


위의 이미지를 Python Working Directory에 다운로드하고, 다음과 같이 코드를 작성하여 실행합니다:


ImageDisplay.py

# OpenCV 라이브러리 임포트
import cv2
 
# 이미자 압력
image = cv2.imread("landscape.jpg")

# 원본 이미지를 회색조로 변환
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 원본 이미지와 회색조 이미지를 각각 Widnows로 출력
cv2.imshow("Landscape", image)
cv2.imshow("Landscape - gray", gray_image)

# ESC 키 입력 시 Windows 닫음
cv2.waitKey(0)
cv2.destroyAllWindows()


실행결과는 다음과 유사할 것입니다.



다음은 예제 코드는 Web Cam 화면을 출력하는 코드입니다:


WebCam.py

import cv2

def show_webcam(mirror=False):
    cam = cv2.VideoCapture(0)
    while True:
        ret_val, img = cam.read()
        if mirror: 
            img = cv2.flip(img, 1)
        cv2.imshow('my webcam', img)
        
        if cv2.waitKey(1) == 27: 
            break  # esc to quit
    cv2.destroyAllWindows()

def main():
    show_webcam(mirror=True)

if __name__ == '__main__':
    main()


당연히! PC에 웹캠이 연결되어 있는 경우에만 정상적으로 실행됩니다.


그러면 이상으로 이번 포스팅을 마치고, 다음 포스팅에서는 OpenCV 3.3.1 버전의 새로운 기능인 OpenCV-JavaScript Interface를 통해 Web 기반의 인터랙티브 컴퓨터 비전 앱을 만드는 튜토리얼로 찾아 뵙겠습니다.

Comments