Подтвердить что ты не робот

Преобразование изображения из PIL в формат openCV

Я пытаюсь преобразовать изображение из формата PIL в OpenCV. Я использую OpenCV 2.4.3. вот что я пытался до сих пор.

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

Но я думаю, что изображение не преобразуется в формат CV. Окно показывает мне большое коричневое изображение. Где я ошибаюсь в преобразовании изображения из формата PIL в CV?

Кроме того, зачем мне вводить cv.cv для доступа к функциям?

4b9b3361

Ответ 1

используйте это:

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

Ответ 2

Это самая короткая версия, которую я мог найти, сохраняя/скрывая дополнительное преобразование:

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

Если вы читаете файл по 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)