1장. AI 비전과 OpenCV 개발환경
OpenCV 알아보기
공구 상자를 열면 망치, 톱, 자, 드라이버가 칸마다 들어 있습니다. 필요할 때마다 철물점에 가지 않아도 됩니다. OpenCV 는 이미지와 동영상을 다루는 공구 상자입니다. 사진 읽기, 색 바꾸기, 노이즈 지우기, 테두리 찾기, 동영상 읽기, 딥러닝 모델 돌리기까지 2,500개가 넘는 알고리즘이 들어 있다고 공식 소개에 적혀 있습니다.
그림의 네 상자는 공구 상자의 칸, 곧 모듈(module, 묶음)입니다. 이 과정에서는 그림 파일을 읽고 쓰는 imgcodecs 와 이미지를 다듬는 imgproc 를 가장 많이 씁니다. 여기서 공구 상자가 OpenCV 이고, 칸 하나가 모듈이고, 칸 안의 공구 하나가 cv2.imread 같은 함수입니다.
OpenCV 의 내력
| 항목 | 내용 |
|---|---|
| 이름 | Open Source Computer Vision Library. 누구나 코드를 열어 볼 수 있는(open source) 컴퓨터비전 라이브러리 |
| 시작 | 1999년 인텔(Intel) 연구소에서 시작했다 |
| 값 | 무료. 회사 제품에도 쓸 수 있는 공개 라이선스(Apache 2.0)를 따른다 |
| 언어 | 속은 C++ 로 짜여 빠르다. 파이썬에서 불러 쓸 수 있다 |
| 파이썬 이름 | cv2. OpenCV 2 시절에 새로 만든 파이썬 묶음의 이름이 그대로 굳었다. 지금 버전(5.0)도 import cv2 로 부른다 |
이 과정에서 쓰는 모듈
| 모듈 | 원래 말 | 하는 일 | 대표 함수 | 쓰는 장 |
|---|---|---|---|---|
| imgcodecs | image codecs(그림 부호기·해독기) | 그림 파일 읽기와 저장 | cv2.imread, cv2.imwrite | 2장부터 |
| imgproc | image processing(영상처리) | 색 바꾸기, 필터, 테두리, 변환 | cv2.cvtColor, cv2.GaussianBlur | 3장부터 14장까지 |
| videoio | video input/output(동영상 입출력) | 동영상 파일과 웹캠 읽기 | cv2.VideoCapture | 15장 |
| dnn | deep neural network(깊은 신경망) | 학습한 딥러닝 모델 돌리기 | cv2.dnn.readNet | 18장 |
import cv2
# 설치된 OpenCV 의 버전을 찍는다
print(cv2.__version__)
# OpenCV 함수가 돌려준 그림은 NumPy 배열이다. 빈 도화지를 하나 만들어 자료형을 본다
import numpy as np
canvas = np.zeros((10, 10, 3), dtype=np.uint8)
gray = cv2.cvtColor(canvas, cv2.COLOR_BGR2GRAY) # 컬러 → 흑백으로 바꾼다
print(type(gray), gray.shape)cv2.cvtColor 는 convert color(색 바꾸기)를 줄인 이름이고, cv2.COLOR_BGR2GRAY 는 "BGR 을 GRAY(흑백)로"라는 뜻입니다. 2 는 영어 to 와 소리가 같아 "~로"라는 뜻으로 씁니다.
주의할 점
- OpenCV 에는 판(4.x, 5.x)마다 이름이 바뀐 함수가 조금 있습니다. 인터넷의 예제가 오래됐으면 공식 문서(docs.opencv.org)에서 지금 판의 이름을 확인합니다.
cv2.imshow로 띄우는 창은 VS Code 의 노트북이나 원격 환경에서 열리지 않을 수 있습니다. 이 과정은 그림을 Matplotlib 으로 보여 줍니다.