2017-12-11 18 views
0

PIL에서 cv2로 이미지를 저장하고 다시로드하지 않고 어떻게 전달합니까?PIL에서 Cv2로 이미지 변환 Python 3.6.3

import cv2 
import numpy as np 
from PIL import Image 

img = Image.open('path/to/pic.jpg') 
#modify picture using PIL 
img.save('path/to/pic.jpg') 
img = cv2.imread("pic.jpg") 

답변

1

사용하십시오 tempfile

테스트되지 않은 코드 :

temp_file = TemporaryFile() 
with open('path/to/pic.jpg', 'wb') as f: 
    temp_file.write(f) 
    temp_file.seek(0) 

pil_img = Image.open(temp_file) 
cv_img = cv2.imread(temp_file) 
1

당신은 (CV2는 내부적으로 데이터를 저장하는 데 너무 NumPy와 사용)을 바이트에 액세스하고 NumPy와 배열을 구성 할 수 있습니다.

def imageToNumpy(): 
    with Image.open('dark.jpg') as img:   
     nparray = np.fromstring(img.tobytes(), dtype=np.uint8) 
     nparray = nparray.reshape((img.size[1], img.size[0], img.layers)) 
    return nparray 


cv2.imwrite("testme.png", imageToNumpy())