将图像在PIL之间转换为Cv2 Python 3.6.3

时间:2017-12-11 21:22:34

标签: python image python-imaging-library cv2

如何将图像从PIL传递到cv2而不必保存并重新加载?

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")

3 个答案:

答案 0 :(得分:1)

使用tempfile

未经测试的代码:

lapply(b, which.closest, vec=a)
#[[1]]
#[1] 9

#[[2]]
#[1] 7

#[[3]]
#[1] 3

答案 1 :(得分:1)

您可以访问字节并构建您的numpy数组(cv2也在内部使用numpy来存储它们的数据)。

d = {'TRANSFERRED': [2281, 1031, 1775, 867, 1242],
     'CLOSED':      [239, 269, 645, 540, 388], 
     'DEFERRED':    [89, 5, 68, 48, 37],
     'OPEN':        [3, 0, 2, 1, 0],
     'IN PROGRESS': [0, 2, 4, 0, 5],
     'QUEUED':      [0, 0, 0, 0, 0]}

答案 2 :(得分:0)

以下内容适用于Python 3.7.3

from PIL import Image
from cv2 import cvtColor, COLOR_BGR2RGB
from numpy import array

# get the image path
img_path = 'images/test.jpg'
img_rgb = cvtColor(array(Image.open(img_path)), COLOR_BGR2RGB)