J'essaie de convertir une image du format PIL
au format OpenCV
. J'utilise OpenCV 2.4.3
. voici ce que j'ai essayé jusqu'à maintenant.
>>> from PIL import Image
>>> import cv2 as cv
>>> pimg = Image.open('D:\\traffic.jpg') #PIL Image
>>> cimg = cv.cv.CreateImageHeader(pimg.size,cv.IPL_DEPTH_8U,3) #CV Image
>>> cv.cv.SetData(cimg,pimg.tostring())
>>> cv.cv.NamedWindow('cimg')
>>> cv.cv.ShowImage('cimg',cimg)
>>> cv.cv.WaitKey()
Mais je pense que l'image n'est pas convertie au format CV. La fenêtre me montre une grande image marron. Où est-ce que je me trompe dans la conversion d'une image du format PIL
en CV
?
Aussi, pourquoi dois-je taper cv.cv
pour accéder aux fonctions?
utilisez ceci:
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()
C'est la version la plus courte que j'ai pu trouver, enregistrant/masquant une conversion supplémentaire:
pil_image = PIL.Image.open('image.jpg')
opencvImage = cv2.cvtColor(numpy.array(pil_image), cv2.COLOR_RGB2BGR)
Si vous lisez un fichier depuis une URL:
import cStringIO
import urllib
file = 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)