2012-11-27 5 views
21

OpenCV의 카메라 메소드로 추출한 이미지에 Zbar 라이브러리의 QR 코드 탐지 방법을 사용하려고합니다. 일반적으로 QR 코드 탐지 방법은 내 컴퓨터에서 이미지 (jpg, png 등)로 작동하지만 OpenCV의 캡쳐 된 프레임이 다를 수 있습니다.
캡처 한 프레임을 PIL 이미지로 만드는 방법이 있습니까?OpenCV 이미지를 파이썬의 PIL 이미지로 변환합니다 (Zbar 라이브러리와 함께 사용)

감사합니다.

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 

답변

56

, 당신은 또한이 작업을 수행 할 수 있습니다

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

나는 대답을 찾은 것 같습니다. 나중에 결과로 편집하겠습니다. PIL 이미지에

OpenCV의

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

+0

를 지금까지 내가 변환 된 이미지가 정말 캡처 이미지되지 않는 몇 가지 문제가 있어요. – QuantumRich

+0

이봐, 나도 너와 똑같은 문제가 있었지만이게 효과가 있었지만 실제로 받아 들여지는 대답은 못했다. 허용 된 것으로 표시해야합니다. –

4

당신은 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()) 

하지만 Image.fromstring의 'L'매개 변수입니다 8 비트 B & W 이미지 용. 게다가 cv.CreateImage 함수의 인수를 1 (단일 채널 이미지)에서 3 (3 채널 = RGB)로 변경해야합니다.

희망은 당신을 위해 작동합니다. 건배

파이썬 CV2와