Computer Vision

[이미지 전처리] Pillow PIL , Opencv cv2 , 이미지 형태 정규화(RGB, RGBA)

Acdong 2020. 12. 4. 15:02
728x90

나는 사용자들이 업로드한 이미지를 받아서 처리해주는 프로젝트를 진행하고 있고

역시 에러가 발생하기 전까지는 이런 사실을 전혀 몰랐다.

 

이미지 칼라의 형식은 다양한 형식이 있고 이것에 따라 차원이 달라진다.

 

RGB , RGBA 등등...

 

모든 데이터를 RGB든 RGBA 든 모두 같은 형식(정규화)으로 통일 시켜야 정확한 결과를 얻을 수 있다.

 

내가 여지것 본 데이터들은 ( 143 , 266 , 3 ) 과 같이 뒤에가 항상 3 으로 끝나는 이미지가 대부분이여서 이미지는 끝이 3으로 끝나는 구나 라고 생각했는데 그게 아니였다.

 

에러를 발생시킨 이미지를 봤더니 위처럼 이미지 객체가 이런식으로 차원의 맨 끝이 4로 되어있더라..

궁금해서 mode( ) 함수를 통해 형식을 알아봤다.

 

 보니까 RGBA 형식이더라 RGB만 있는 거 아니였어? 

그래서 이걸 RGB 형식으로 바꿔줘야 한다.

 

RGB로 바꾸는 함수는 간단하다.

먼저 pillow 패키지는 convert('형식')으로 바꾸면 된다.

image = image.convert('RGB') # RGB 3차원으로 변경해서 이미지정규화

openCV 패키지는 cv2.cvtColor 함수를 사용해서 바꾸면 된다.

img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

COLOP_BGR2RGB 이것은 BGR로 되어있는 걸 RGB로 바꾸겠다는 파라미터이다.

예제에서 이런 코드가 많이 있었는데 이제야 이 코드가 무슨 기능을 하는지 확실하게 이해를 했다.

 

컬러형식이 변경되었다.

 

반응형