OpenCV 비전 실무1장 · AI 비전과 OpenCV 개발환경3 / 22← 이전목차다음 →MetaContents

1장. AI 비전과 OpenCV 개발환경

컴퓨터비전이란

과일 가게에 손님이 들어와 진열대를 봅니다. 손님은 한눈에 "사과 하나, 귤 하나, 라임 하나"라고 말합니다. 그런데 같은 진열대를 카메라로 찍어 컴퓨터에 넣으면, 컴퓨터가 받는 것은 과일이 아니라 숫자 76,800칸짜리 표입니다. 그 숫자 표에서 "여기 빨갛고 둥근 덩어리가 있다, 이건 사과다"라는 뜻을 찾아내는 기술이 컴퓨터비전입니다.

사람은 사진에서 바로 과일을 알아보고, 컴퓨터는 숫자 표만 받아 규칙이나 학습으로 뜻을 찾는다는 비교 그림

왼쪽은 사람의 눈, 오른쪽은 컴퓨터의 눈입니다. 여기서 손님의 눈이 카메라이고, 손님의 머릿속 판단이 컴퓨터비전 프로그램입니다. 비유가 맞지 않는 곳도 있습니다. 사람은 처음 보는 과일도 "과일 같다"고 짐작하지만, 컴퓨터는 숫자에서 규칙을 찾도록 누군가 만들어 주거나 가르쳐 줘야 합니다.

사람과 컴퓨터 견주기

견줄 것사람컴퓨터
무엇을 받나빛이 눈에 들어온 장면칸마다 숫자가 적힌 표
뜻을 찾는 법평생 본 경험으로 바로 안다사람이 적은 규칙이나 데이터로 배운 모델
잘하는 것처음 보는 것도 짐작한다지치지 않고 수천 장을 똑같은 기준으로 본다
약한 것피곤하면 놓친다배운 적 없는 상황에 약하다

짧은 예시

사진은 사람에게는 그림이지만 파이썬에게는 숫자 표입니다. 아주 작은 3×4 칸짜리 "사진"을 숫자로 직접 만들어 봅니다.

Python
import numpy as np

# 세로 3칸, 가로 4칸짜리 흑백 사진. 0 은 검정, 255 는 흰색이다
photo = np.array([
    [0,   0,   255, 255],
    [0,   128, 128, 255],
    [255, 255, 0,   0],
], dtype=np.uint8)

print(photo.shape)   # 결과: (3, 4) → 세로 3칸, 가로 4칸
print(photo[1, 2])   # 결과: 128 → 둘째 줄 셋째 칸의 밝기(회색)
코드쉬운 뜻
np.array([...], dtype=np.uint8)숫자 목록으로 배열을 만든다. dtype(data type, 자료형)을 uint8 로 주면 0~255 의 정수만 담는다
photo.shape배열의 모양. 이미지에서는 (세로 칸 수, 가로 칸 수) 순서다
photo[1, 2][줄 번호, 칸 번호]로 한 칸을 꺼낸다. 번호는 0부터 센다

주의할 점

  • 이미지의 모양은 (가로, 세로)가 아니라 (세로, 가로) 순서입니다. 표에서 줄(행)을 먼저 적는 것과 같습니다.
  • 컴퓨터는 숫자 표에서 "사과"라는 뜻을 저절로 알지 못합니다. 뜻을 찾는 방법을 만드는 것이 이 과정 전체의 일입니다.
← 이전 절1장 · 용어 짚고 가기다음 절 →1장 · 이미지는 숫자 표