преобразование изображения openCV в изображение PIL в Python (для использования с библиотекой Zbar)
Я пытаюсь использовать методы обнаружения QR-кода библиотеки Zbar на изображениях, которые я извлекаю с помощью методов камеры OpenCV. Обычно методы обнаружения QR-кода работают с изображениями (jpg, png и т. д.) на моем компьютере, но я думаю, что захваченные кадры OpenCV отличаются.
Есть ли способ превратить захваченный кадр в изображение PIL?
спасибо.
from PIL import Image
import zbar
import cv2.cv as cv
capture = cv.CaptureFromCAM(1)
imgSize = cv.GetSize(cv.QueryFrame(capture))
img = cv.QueryFrame(capture)
#SOMETHING GOES HERE TO TURN FRAME INTO IMAGE
img = img.convert('L')
width, height = img.size
scanner = zbar.ImageScanner()
scanner.parse_config('enable')
zbar_img = zbar.Image(width, height, 'Y800', img.tostring())
# scan the image for barcodes
scanner.scan(zbar_img)
for symbol in zbar_img:
print symbol.data
3 ответов
С python CV2 вы также можете сделать следующее:
import Image, cv2
cap = cv2.VideoCapture(0) # says we capture an image from a webcam
_,cv2_im = cap.read()
cv2_im = cv2.cvtColor(cv2_im,cv2.COLOR_BGR2RGB)
pil_im = Image.fromarray(cv2_im)
pil_im.show()
Я думаю, что, возможно, нашел ответ. Позже я отредактирую результаты.
OpenCV для PIL Image
import Image, cv
cv_im = cv.CreateImage((320,200), cv.IPL_DEPTH_8U, 1)
pi = Image.fromstring("L", cv.GetSize(cv_im), cv_im.tostring())
источник:http://opencv.willowgarage.com/documentation/python/cookbook.html
вы пытаетесь получить изображение RGB? Если это так, вам нужно изменить свои параметры из этого:
cv_im = cv.CreateImage((320,200), cv.IPL_DEPTH_8U, 1)
pi = Image.fromstring("L", cv.GetSize(cv_im), cv_im.tostring())
для этого:
cv_im = cv.CreateImage((320,200), cv.IPL_DEPTH_8U, 3)
pi = Image.fromstring("RGB", cv.GetSize(cv_im), cv_im.tostring())
поскольку он документирован почти нигде, кроме параметра " L " изображения.fromstring предназначен для 8-битных изображений B&W. Кроме того, вам нужно изменить аргумент вашего резюме.Функция CreateImage от 1 (одноканальное изображение) до 3 (3 канала=RGB).
надеюсь, что это работает для вас. Ура!--3-->