본문 바로가기
개발 관련 이야기

Base64 string -> cv2 이미지 변환

by 꿈틀쓰 2022. 9. 3.

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

댓글