작성
·
151
0
색이 있는 이미지 데이터는 3개의 채널을 가지고 각각의 채널에 2차원 형태의 평면에 각 픽셀값들이 있는 형식으로 알고 있는데
image = cv2.cvtColor(cv2.imread(image_name_batch[image_index]), cv2.COLOR_BGR2RGB)
위의 해당 코드로 파일형식의 데이터를 이미지화 시켰을 때, 아래 처럼 3개의 채널이 아니라 다수의 채널이 있음을 확인하였습니다. 제가 이해한 부분이 잘못된건지 잘 모르겠어서 질문을 드리게 되었습니다.
[[[191 233 167] [191 233 167] [191 233 167] ... [170 220 157] [169 219 156] [169 219 156]] [[191 233 167] [191 233 167] [192 234 168] ... [170 220 157] [169 219 156] [169 219 156]] [[191 233 167] [192 234 168] [192 234 168] ... [170 220 157] [169 219 156] [169 219 156]] ... [[186 192 156] [186 192 156] [186 192 156] ... [192 195 164] [192 195 164] [192 195 164]] [[186 192 156] [186 192 156] [186 192 156] ... [191 194 163] [191 194 163] [191 194 163]] [[186 192 156] [186 192 156] [186 192 156] ... [191 194 163] [191 194 163] [191 194 163]]]
답변 1
1
안녕하십니까,
opencv가 이미지를 읽어들일때 채널 Last로 읽어들이기 때문입니다. 즉 이미지 크기가 224x224라면
224x224x3(채널수) 배열을 만듭니다. 그렇기 때문에 이미지 배열의 마지막 차원이 채널이 되며 적어주신대로 3개의 채널값이 마지막 차원이 되는 걸로 표시됩니다.
제가 설명은 아마 채널 first 로 설명을 드렸습니다. 그게 더 직관적이기 때문입니다. channel first 면 아래와 같이 되지만 channel last는 위와 같은 방식으로 표기 됩니다.
[
[
[192, 182,,......................] , # 224개의 컬럼
......
[181, 180.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,]
# 224개의 로우
],
[
[192, 182,,......................] , # 224개의 컬럼
......
[181, 180.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,]
# 224개의 로우
],
[
[192, 182,,......................] , # 224개의 컬럼
......
[181, 180.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,]
# 224개의 로우
]
] #3개의 채널
감사합니다.