2016-07-30 22 views
1

Ich verwende opencv Version 3.1.0 mit zbar (neueste Version als von diesem Post) und PIL (neueste Version als von diesem Post)mit opencv mit zbar in Python auf Windows 8.1 QR-Codes erkennen

import zbar 
import Image 
import cv2 

# create a reader 
scanner = zbar.ImageScanner() 
# configure the reader 
scanner.parse_config('enable') 
#create video capture feed 
cap = cv2.VideoCapture(0) 

while(True): 
    ret, cv = cap.read() 
    cv = cv2.cvtColor(cv, cv2.COLOR_BGR2RGB) 
    pil = Image.fromarray(cv) 
    width, height = pil.size 
    raw = pil.tostring() 
    # wrap image data 
    image = zbar.Image(width, height, 'Y800', raw) 

    # scan the image for barcodes 
    scanner.scan(image) 

    # extract results 
    for symbol in image: 
     # do something useful with results 
     print 'decoded', symbol.type, 'symbol', '"%s"' % symbol.data 

# clean up 
print "/n ...Done" 

Ich verstehe nicht, warum das nicht funktioniert, es sollte ständig nach qrcodes im aktuellen Frame des Video - Streams suchen und wenn es eins sieht entschlüsselt es es und druckt was es darin sagt Ich halte ausgedruckte qrcodes vor meine webcam und es funktioniert nicht es zeigt, dass meine kamera eingeschaltet ist und dass es einen video stream gibt so irgendwo in der while loop etwas schief läuft

I versuchte es vorher mit QR-Codes auf meinem Computer nicht ausgedruckt und es hat gut funktioniert

Ich habe auch versucht, zeigen Sie mir den aktuellen Rahmen mit cv2.imshow("out",cv) aber wenn ich das Programm zeigte nur ein großes graues Quadrat, wo es das Video zeigen sollte Strom und dann erstarrte es, also musste ich Netbeans töten.

Antwort

0

zbar arbeitet mit Graustufenbildern. Ändern Sie cv = cv2.cvtColor(cv, cv2.COLOR_BGR2RGB) zu cv = cv2.cvtColor(cv, cv2.COLOR_BGR2GRAY).

Ich schätze, Sie verwenden this example code, um Ihr Programm abzustützen. Sie machen die Farbe zu Graustufen-Konvertierung mit convert('L') in Zeile 15.

+0

Ich legte RGB2GRAY statt nach BGR2RGB und es funktionierte großartig, entschlüsselte ein Bild, das ich von dem Bildschirm auf meinem Handy gehalten – vaughnmcbob1