2017-12-11 24 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()) 
関連する問題