OpenCV(Open Source Computer Vision Library)는 실시간 컴퓨터 비전과 영상처리를 위한 오픈소스 라이브러리이다. C++, Python, Java 등 다양한 언어로 사용 가능하며, 얼굴 인식, 물체 추적, 이미지 필터링, 머신러닝 모델 훈련 등에 주로 사용된다.
영상이라는 것은 크게 2가지로 나눌 수 있는데 1. 정지영상(이미지), 2. 동영상이다. 정지영상은 흔히 이미지라고 부르고 기본적으로 2차원 데이터이다. 우리가 생각하는 영상인 동영상은 일정 시간 동안 이어지는 여러 프레임의 연속적인 이미지로 구성 것을 말한다.
기본 세팅
OpenCv에 들어가기 앞서 이번에 사용할 프로그램은 Visual Studio Code이다. 새로운 프로그램을 다루는 법을 배울 때마다 새로운 라이브러리를 추가하면 가지고 있는 pip list가 복잡해질 것이다. 따라서 새로운 가상환경을 만들어서 내가 원하는 파이선 라이브러리만 추가하면 편할 것이다.
가상환경 생성
가상환경의 생성에 앞서 OpenCV를의해 사용할 새로운 폴더를 하나 생성하고 그 폴더를 우클릭해서 Visual Studio Code를 실행시켜 보자. 위치는 C드라이브에 생성하는 편이 좋다.
이제 Visual Studio Code의 위쪽 툴바를 보면 터미널이 있고 새터미널을 실행시켜보자. 그렇게 되면 아래에 터미널 창이 뜬다.
이제 이창에 명령어를 입력해서 가상환경을 생성하고 실생 시킬수 있다. 과정은 아래와 같다.
1. python - m venv (원하는 가상환경이름)
좌측의 탐색기를 보면 본인이 입력한 가상환경 이름이 폴더이름 아래 생성된 것을 확인 가능하다
2. 가상환경 활성화
가상환경이름/Scripts/activate
3.원하는 패키지 설치
pip install (원하는 패키지 이름)
우리가 사용할 패키지는 파이썬용 opencv : opencv_python , 이미지(2차원데이터) 다루기 : numpy
+ matplotlib
4. 인터프리터 활성화
위쪽 툴바에 검색창을 누른 뒤 '명령 표시 및 실행' -> python : 인터프리터 선택 -> 가상환경이름으로 된 거 클릭
opencv라는 가상환경이름의 줄을 클릭하면 된다.
opencv에서 일반적으로 사용하는 이미지 파일들이 있는데 대표적으로 "lena"를 많이 사용한다. 인터넷을 통해 다운받아두자. 원한다면 다양한 동물 혹은 사람 건물 이미지들을 다운로드하여두면 예제를 학습할 때 이용할 수 있다.
이제 OpenCV를 이용한 간단한 예제들을 살펴보자.
예제 1. 영상을 읽어들여 화면에 표시하기
파이썬에서 OpenCV를 불러오는 것은 ' import cv2 '를 사용하여 호출하면 된다.
import cv2
영상처리에서 가장 기본은 이미지를 불러오는 것이다. 이때 사용하는 것이 cv2의 함수인 imread이다.
cv2.imread("이미지 경로") : cv2에서 제공하는 함수로 주어진 경로의 이미지를 배열 형태로 읽어 들여 반환해 준다.
img = cv2.imread('./data/lena.jpg')
이제 이미지를 출력하려면 cv2의 이미지 출력 함수인 cv2.imshow("이미지이름', img)를 사용한다.
cv2.imshow("Lena color",img)
실행해 보면 창이 바로 꺼지는 것을 볼 수 있는데 이것은 단순히 창을 띄우는 코드이기 때문에 유지해주는 코드와 종료하는 코드를 따로 추가해 줄 필요가 있다.
cv2.waitKey()
cv2.destroyAllWindows()
cv2.waitkey() 에는 사용자의 키입력을 () ms만큼 기다려준다. 즉 창을 해당 ms만큼 유지시켜 준다.
cv2. destroyAllWindows()는 OpenCV를 통해 열어준 모든 창을 닫아주는데 이는 OpenCV코드에 필수적으로 넣어주어야 한다. 이제 다시 실행해 보면
위와 같은 창을 얻을 수 있다. 이 이미지는 앞으로도 자주 나올 테니 익숙해 지자