Convert image from PIL to openCV format Convert image from PIL to openCV format python python

Convert image from PIL to openCV format


use this:

pil_image = PIL.Image.open('Image.jpg').convert('RGB') open_cv_image = numpy.array(pil_image) # Convert RGB to BGR open_cv_image = open_cv_image[:, :, ::-1].copy() 


This is the shortest version I could find,saving/hiding an extra conversion:

pil_image = PIL.Image.open('image.jpg')opencvImage = cv2.cvtColor(numpy.array(pil_image), cv2.COLOR_RGB2BGR)

If reading a file from a URL:

import cStringIOimport urllibfile = cStringIO.StringIO(urllib.urlopen(r'http://stackoverflow.com/a_nice_image.jpg').read())pil_image = PIL.Image.open(file)opencvImage = cv2.cvtColor(numpy.array(pil_image), cv2.COLOR_RGB2BGR)


The code commented works as well, just choose which do you prefer

import numpy as npfrom PIL import Imagedef convert_from_cv2_to_image(img: np.ndarray) -> Image:    # return Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))    return Image.fromarray(img)def convert_from_image_to_cv2(img: Image) -> np.ndarray:    # return cv2.cvtColor(numpy.array(img), cv2.COLOR_RGB2BGR)    return np.asarray(img)