raspberry pyzbar code python opencv python-imaging-library zbar

pyzbar - convertir imagen openCV en imagen PIL en Python(para usar con la biblioteca Zbar)



zbar raspberry pi (3)

¿Estás tratando de obtener una imagen RGB? Si ese es el caso, debe cambiar sus parámetros a partir de esto:

cv_im = cv.CreateImage((320,200), cv.IPL_DEPTH_8U, 1) pi = Image.fromstring("L", cv.GetSize(cv_im), cv_im.tostring())

a ese:

cv_im = cv.CreateImage((320,200), cv.IPL_DEPTH_8U, 3) pi = Image.fromstring("RGB", cv.GetSize(cv_im), cv_im.tostring())

ya que está documentado casi en ninguna parte, pero el parámetro ''L'' de Image.fromstring es para imágenes en blanco y negro de 8 bits. Además, debe cambiar el argumento de su función cv.CreateImage de 1 (imagen de canal único) a 3 (3 canales = RGB).

Espero que funcione para ti. Aclamaciones

Intento usar los métodos de detección del código QR de la biblioteca Zbar en las imágenes que extraigo con los métodos de cámara de OpenCV. Normalmente, los métodos de detección de códigos QR funcionan con imágenes (jpg, png, etc.) en mi computadora, pero supongo que los marcos capturados de OpenCV son diferentes.
¿Hay alguna forma de convertir el fotograma capturado en una imagen PIL?

Gracias.

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


Con el pitón CV2, también puedes hacer esto:

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


Creo que puedo haber encontrado la respuesta. Voy a editar más adelante con los resultados.

Imagen de OpenCV a PIL

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

Fuente: http://opencv.willowgarage.com/documentation/python/cookbook.html