OpenCV 비전 실무3장 · 디지털 영상과 색공간 변환20 / 21← 이전목차다음 →MetaContents

3장. 디지털 영상과 색공간 변환

정리

숫자 표의 생김새, 색을 적는 방식, 색으로 고르기의 세 칸으로 3장을 요약한 인포그래픽
  • 픽셀은 img[y, x] 로 읽고 바꾸며, 슬라이싱으로 영역을 한꺼번에 칠합니다. 원본을 지키려면 copy() 한 복사본에 칠합니다.
  • 해상도는 칸 수입니다. 메모리 크기는 가로 × 세로 × 채널 × 한 칸 바이트이고, 바구니 그림(320×240 컬러)은 230,400바이트입니다.
  • 계산할 때는 astype(np.float32) / 255 로 0.0~1.0 으로 바꾸고, 되돌릴 때는 np.clip 으로 자른 뒤 astype(np.uint8) 로 담습니다. float32 는 메모리가 4배입니다.
  • 빛은 더할수록 밝아집니다. OpenCV 는 BGR, Matplotlib 은 RGB 이므로 cv2.COLOR_BGR2RGB 나 [..., ::-1] 로 순서를 바꿉니다.
  • 흑백 밝기는 0.299×R + 0.587×G + 0.114×B 입니다. 사과 칸 [34, 37, 206] 은 87.189 로, 반올림한 87 이 cvtColor 결과와 같습니다.
  • OpenCV 의 HSV 는 H 0~179(360도의 절반), S·V 0~255 입니다. 그늘과 빛 반사에도 H 는 크게 바뀌지 않아 색으로 고르기에 좋습니다.
  • cv2.inRange 로 범위 안의 칸을 255 로 적은 마스크를 만들고, 빨강은 H 의 양 끝 두 구간을 cv2.bitwise_or 로 합칩니다. 바구니 그림에서 빨강은 7.09%, 보라 4.57%, 초록 3.77%, 노랑 2.58% 를 차지했습니다.
← 이전 절3장 · 프로젝트 1 — 색으로 과일 고르고 넓이 비율 재기다음 절 →3장 · 확인문제와 해답