1. OpenCV 개요
OpenCV 개요
What is OpenCV?
- Open source
- Computer vision & machine learning
- Software library
Why OpenCV?
- BSD/Apache 2 license … Free for academic & commercial use
- Multiple interface … C, C++, Python, Java, JavaScript, MATLAB, etc.
- Multiple platform … Windows, Linux, Mac OS, iOS, Android
- Optimized … CPU instructions, Multi-core processing, OpenCL, CUDA
- Popular … More than 18 million downloads
- Usage ... Stitching streetview images, detecting intrusions, monitoring mine equipment, helping robots navigate and pick up objects, Interactive art, etc.
OpenCV 역사

OpenCV 구성
OpenCV 모듈
- 메인 모듈(main modules): Core, widely used, infrastructures
- 추가 모듈(extra modules): Brand new, unpopular, non-free, HW dependency, etc.

OpenCV 메인 모듈과 설명

OpenCV Environment

2. OpenCV-Python 설치와 개발 환경 설정
OpenCV-Python 설치
pip 명령으로 opencv-python 설치하기
- 명령 프롬프트에서 아래 명령어를 입력
pip install opencv-python
- 시스템에 numpy가 설치되어 있지 않다면 numpy도 함께 설치됨
- Anaconda 또는 Miniconda를 사용하고 있다면 conda activate env-name 명령으로 원하는 가상 환경을 선택한 후, pip 명령으로 설치
- 설치되는 OpenCV 버전은 https://pypi.org/ 에서 확인 가능
- OpenCV 추가 모듈도 함께 사용하려면 opencv-contrib-python 패키지를 설치
opencv-python 설치 화면 & 설치 확인하기

OpenCV-Python 개발 환경 설정
메모장 + 명령프롬프트
주피터 노트북(Jupyter Notebook)
- 웹 브라우저에서 파이썬 코드를 작성 & 블록 단위 실행
- 마크업 언어와 그림 등을 활용한 설명 추가가 쉬움
파이썬 IDE
- PyCharm, Visual Studio Code, Spider 등
- 편리한 디버깅
- OpenCV에서 제공하는 GUI 기능 사용
VS Code에서 새 Python 프로그램 만들기
- VS Code에서 [파일] → [폴더 열기] 메뉴 선택한 후, 코드를 작성할 폴더를 선택
- (e.g.) C:\coding\ds_school\opencv\ch02
- VS Code 탐색기 창에서 [새 파일] 버튼 클릭 후, HelloCV.py 파일 이름 입력

- 편집창에 소스 코드 입력

VS Code에서 Python 프로그램 실행하기
- [실행] → [디버깅 없이 실행 (CTRL+F5)] 메뉴 선택

3. 기본적인 영상 출력 프로그램
기본적인 영상 출력 프로그램
BMP 파일을 불러와서 출력하는 BmpShow.py 소스 코드

영상 불러와서 출력하기
BmpShow.py 프로그램 실행하기
- 현재 폴더에 cat.bmp 파일이 없을 경우

- 현재 폴더에 cat.bmp 파일을 저장한 후 실행한 결과

4. OpenCV 주요 함수 사용법
OpenCV 주요 함수 사용법
영상 파일 불러오기

영상 파일 저장하기

새 창 띄우기

창 닫기

영상 출력하기

키보드 입력 대기

OpenCV 도움말 사이트
OpenCV API 도움말 찾기
5. Matplotlib을 이용한 영상 출력
Matplotlib 라이브러리
- 함수 그래프, 차트(chart), 히스토그램(histogram) 등의 다양한 그리기 기능을 제공하는 Python 패키지
- OpenCV를 사용하기 위해 반드시 설치해야 하는 라이브러리는 아니지만 numpy.ndarray 영상 데이터를 다양한 형태로 화면 출력할 때 사용할 수 있음
- 특히 쥬피터 노트북 환경에서 영상을 웹브라우저 안에 출력할 때 유용
Matplotlib 라이브러리 설치하기
pip install matplotlib
Matplotlib으로 컬러 영상 출력하기
- OpenCV에서 불러온 컬러 영상 데이터는 BGR 순서이지만, Matplotlib는 영상 데이터의 색상 순서가 RGB 순서라고 간주함
- 그러므로 cv2.cvtColor() 함수 이용하여 색상 순서를 변경해야 함
img = cv2.imread('cat.bmp')
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.show()
Matplotlib으로 그레이스케일 영상 출력하기
- plt.imshow() 함수에서 컬러맵을 cmap='gray' 으로 지정해야 함
img = cv2.imread('cat.bmp', cv2.IMREAD_GRAYSCALE)
plt.imshow(img, cmap='gray')
plt.show()
Matplotlib을 이용하여 영상 출력하기
import matplotlib.pyplot as plt
import cv2
imgBGR = cv2.imread('cat.bmp')
imgRGB = cv2.cvtColor(imgBGR, cv2.COLOR_BGR2RGB)
plt.axis('off')
plt.imshow(imgRGB)
plt.show()
imgGray = cv2.imread('cat.bmp', cv2.IMREAD_GRAYSCALE)
plt.axis('off')
plt.imshow(imgGray, cmap='gray')
plt.show()

Matplotlib을 이용하여 창 하나에 여러 개의 이미지 출력하기
import matplotlib.pyplot as plt
import cv2
imgBGR = cv2.imread(cat.bmp')
imgRGB = cv2.cvtColor(imgBGR, cv2.COLOR_BGR2RGB)
imgGray = cv2.imread('cat.bmp', cv2.IMREAD_GRAYSCALE)
plt.subplot(121), plt.axis('off'), plt.imshow(imgRGB)
plt.subplot(122), plt.axis('off'), plt.imshow(imgGray, cmap='gray')
plt.show()

Jupyter Notebook에서 Matplotlib으로 영상 출력하기
