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로 바꾸겠다는 파라미터이다.
예제에서 이런 코드가 많이 있었는데 이제야 이 코드가 무슨 기능을 하는지 확실하게 이해를 했다.
반응형
'Computer Vision' 카테고리의 다른 글
[이미지 전처리] BGR and RGB (0) | 2020.12.22 |
---|---|
[이미지 전처리]. ImageDataGenerator 클래스 : 이미지 제너레이터 (0) | 2020.12.07 |
[이미지 전처리]. 이미지 차원 추가하기 , np.append_dim() (0) | 2020.12.04 |
[이미지 전처리] Url to image , url 주소를 통한 이미지 처리 (0) | 2020.11.25 |
[이미지 전처리]. image to base64 , base64 to image 변환하는 방법 (2) | 2020.11.25 |