2021-04-13 10:23:22

저는 영상처리 및 컴퓨터비전 관련 과제를 수행할 때 opencv와 pillow를 자주 사용하곤 합니다. 그러다보니 이미지를 opencv (cv2)에 맞게 변환시켜야 할 때가 있고, pillow에 맞게 변환시켜야 할 때도 있습니다. 변환 과정 없이 그냥 사용하면 에러가 납니다. 서로 규격이 안 맞는 것이죠. 

 

오늘은 cv2.imread()로 읽은 이미지를 pillow 이미지로 변환하는 것에 대해 살펴보도록 하겠습니다. cv2로 읽은 이미지는 넘파이 배열에 담겨집니다. 이것을 pillow 이미지로 변환하려면 pillow (PIL) 패키지의 Image.fromarray() 함수가 필요합니다.

 

1
2
3
4
5
6
7
8
9
10
11
import cv2
from PIL import Image
 
cv2_img = cv2.imread("test.JPG", cv2.IMREAD_COLOR)
 
cv2.imshow("cv2 image", cv2_img) # cv2 이미지 보기
cv2.waitKey(0)
cv2.destroyAllWindows()
 
pil_img = Image.fromarray(cv2_img) #cv2 이미지를 pil 이미지로 변환
pil_img.show() # pil 이미지 보기
cs

 

이렇게 해주면 cv2 이미지가 pil 이미지로 변환되어 화면에 잘 출력됩니다. 

 

참고로 pil 이미지를 cv2 이미지로 변환할 때는 np.array() 함수를 쓰면 됩니다.