무효 클릭 IP 추적 중...
머신러닝,딥러닝/opencv

[오픈 cv python] 이미지 읽기(cv2.imread) | 컬러 , 흑백

꼬예 2022. 8. 30.

 

 

이번 포스팅에서는 opencv를 통해 아래 양이미지를 읽는 방법에 대해 알아보도록 하겠습니다.

 

//sheep.jpg

 

sheep.jpg

 

1) 이미지 읽기

이미지를 읽을때는 image read의 약자인 imread함수를 이용하는데요. 인자로는 읽어올 파일의 경로를 적어주면 됩니다.

 

 

2) flag 설정

공식문서에 보면 imread함수에는 flag라는 인자값이 있는데요.

 

 

이는 해당 이미지를 읽어 올때 컬러 이미지로 읽을지, 그레이스케일 이미지로 읽을지 정하는 것이라고 보면 됩니다.

 

가령 컬러 이미지로 읽고 싶다면 cv2.IMREAD_COLOR,

 

컬러이미지

 

그레이스케일 이미지로 읽고 싶을땐, cv2.IMREAD_GRAYSCALE 을 두번째 인자로 넣어주면 됩니다.

 

 

참고로 cv2.IMREAD_COLOR숫자 1로,

 

IMREAD_COLOR

 

cv2.IMREAD_GRAYSCALE숫자 0으로 쓰이기도 하니 참고하기 바랍니다.

 

GRAYSCALE

 

3) return image 값

imread함수를 통해 리턴받은 img값의 정체는 무엇일까요?

 

(1) 타입(type)

먼저 타입을 찍어보면,

타입

 

output:

 

ndarray

 

넘파이 ndarray이라는 것을 알 수 있습니다.

 

(2) shape

 

shape의 경우 flag를 어떻게 설정하느냐에 따라 달라 지는데요.

 

먼저 IMREAD_COLOR을 통해 이미지를 읽으면

 

 

3차원의 shape이고, 마지막 차원의 3BGR컬러 채널을 의미합니다.

 

IMREAD_GRAYSCALE을 통해 이미지를 읽으면,

 

 

채널 차원이 빠진 2차원의 shape이 출력됩니다.

 

(3) dtype

 

ndarray 내부 요소들의 타입은 무엇일까요?

 

uint8, 즉 unsigned int로,  0부터 255값을 의미합니다.

 

실제로 이미지를 print 해보면,

 

 

아래와 같은 int형태의 값들로 구성 되어 있습니다. 

 

 

(4) 이미지 dtype 변경

이미지 프로세싱을 하다보면 디테일한 값의 변화를 체크하기 위해 dtypefloat형태로 바꿔줄 필요도 있는데요.

 

이때는 astype() 메소드를 이용하여 타입을 변경해주시면 됩니다.

 

  • 트위터 공유하기
  • 페이스북 공유하기
  • 카카오톡 공유하기
이 컨텐츠가 마음에 드셨다면 커피 한잔(후원) ☕

댓글