Python으로 영상과 색 다루기

밝기·색·크기 변환이 검출에 필요한 정보를 어떻게 바꾸는지 눈과 배열 값으로 대조합니다.

실습 전에

01 같은 영상인데 왜 색이 다르게 보일까요?

설명

OpenCV의 BGR과 Matplotlib의 RGB 채널 순서가 다릅니다.

02 밝기를 바꾸면 같은 색도 놓칠까요?

설명

색 범위와 밝기 기준을 나누어 정하고 변환 전후 Mask를 비교합니다.

실행 조건

opencv-python-headless·NumPy·Matplotlib을 사용합니다. 카메라는 기본 활동에 필요하지 않습니다.

실습

실습용 노트북 미리보기실습용 노트북 다운로드

1. 배열에서 영상으로

시작 조건

120×160 BGR 영상에 파란 사각형을 그리고 RGB·Gray·HSV로 변환합니다.

진행 방법

  1. 원본 배열의 shape·dtype·범위를 확인하세요.
  2. 같은 영상을 Matplotlib에 올바르게 표시하고 채널 순서를 일부러 바꾼 결과와 비교하세요.

남길 결과

기록 항목과 확인할 점
표현
shape
dtype·값 범위
해석

확인할 점

  • BGR 배열을 RGB처럼 표시하지 않았는가?
  • OpenCV의 uint8 HSV에서 H가 0…179임을 확인했는가?

2. 색 범위로 물체 찾기

시작 조건

파랑 HSV 범위 H=100H=100…130, S≥80, V≥50을 사용합니다.

진행 방법

  1. inRange로 Mask를 만들고 원본 옆에 표시하세요.
  2. 영상 밝기를 낮춘 뒤 같은 기준으로 영역을 찾으세요.
  3. 잡음 또는 색이 비슷한 배경을 하나 추가해 어떤 오류가 생기는지 확인하세요.

남길 결과

기록 항목과 확인할 점
조건
검출 픽셀 수
놓친 영역
잘못 검출한 영역

확인할 점

  • RGB와 HSV의 채널 의미를 섞지 않았는가?
  • 검출 픽셀 수만으로 정확도를 평가하지 않았는가?

3. 좌표를 다음 단계로 넘기기

시작 조건

Mask에서 검출한 영역의 중심을 pixel 좌표로 계산합니다.

진행 방법

  1. 행·열 Index와 x·y 좌표의 관계를 적으세요.
  2. 영상에 중심점을 겹쳐 그려 좌표가 맞는지 확인하세요.
  3. 영역이 하나도 없을 때 반환할 값을 정하세요.

남길 결과

기록 항목과 확인할 점
상황
중심 x
중심 y
검출 유효 여부

확인할 점

  • 0,0을 미검출로 쓰면서 실제 왼쪽 위 물체와 혼동하지 않았는가?
  • 행이 y, 열이 x라는 관계를 유지했는가?

공식 예제·데이터