base64로 인코딩된 이미지를 cv2이 읽을 수 있는 형식으로 변환해서 화면에 출력할 일이 있었다.
input은 base64형식으로 인코딩된 문자열(str)이다.
ex. "image/jpeg;base64,/9j/4AAQSkZJ...."
변환 파이프라인은 이렇다.
base64 str -> binary data -> numpy array -> cv2 array
@staticmethod
def base64_to_nparr(base64str):
bin_buffer = base64.b64decode(base64str.split(',')[1]) # base64 string -> binary data
np_arr = np.frombuffer(bin_buffer, dtype=np.uint8) # binary data -> numpy array
return cv2.imdecode(np_arr, cv2.IMREAD_ANYCOLOR) # numpy array -> cv2 array
1줄
여기서 base64str이 image/jpeg;base64, 로 시작하지 않는다면 split할 필요 없다는 것을 주의
2줄
numpy의 frombuffer 함수를 사용하여 binary에서 numpy로 변환한다. 여기서 dtype은 색깔의 범위가 0~255이기 때문에 unsigned int 8bit로 지정한다.
3줄
cv2의 imdecode 함수를 사용하여 numpy array에서 cv2가 이해할 수 있는 컬러 이미지로 디코딩한다. 여기서 리턴되는 결과로 cv2.imshow를 하여 제대로 출력된다면 성공!
'개발 관련 이야기' 카테고리의 다른 글
FaceNet 논문 리뷰 (0) | 2022.09.05 |
---|---|
AWS Athena vs. EMR vs. Redshift 비교 (0) | 2022.09.04 |
AWS ElastiCache Memcached vs. Redis (0) | 2022.09.02 |
AWS Kinesis Family 비교 (0) | 2022.09.01 |
AWS SAA-C02 시험용 간단 정리 (0) | 2022.08.31 |
댓글