La numérisation QR Code via zbar et Raspicam modul
Je veux utiliser mon raspi cam modul pour scanner les QR codes.
Pour la détection et le décodage des codes qr je veux utiliser zbar.
Mon code actuel:
import io
import time
import picamera
import zbar
import Image
if len(argv) < 2: exit(1)
# Create an in-memory stream
my_stream = io.BytesIO()
with picamera.PiCamera() as camera:
camera.start_preview()
# Camera warm-up time
time.sleep(2)
camera.capture(my_stream, 'jpeg')
scanner = zbar.ImageScanner()
scanner.parse_config('enable')
pil = Image.open(argv[1]).convert('L')
width, height = pil.size
raw = pil.tostring()
my_stream = zbar.Image(width, height, 'Y800', raw)
scanner.scan(image)
for symbol in image:
print 'decoded', symbol.type, 'symbol', '"%s"' % symbol.data
Comme vous pouvez le voir, je veux créer un flux d'images, envoyer ce flux de zbar pour vérifier si un qr code est contenu dans l'image.
Je ne suis pas en mesure d'exécuter ce code, cette erreur est le résultat:
Segmentation fault
------------------ (programme terminé avec le code: 139) Appuyez sur la touche retour pour continuer à
Je ne trouve pas de solution comment fixx ce bug, une idée?
Salutations;
InformationsquelleAutor user3551782 | 2014-05-08
Vous devez vous connecter pour publier un commentaire.
La pénurie de tous les autres réponses, c'est qu'ils ont une grande quantité de RETARD - par exemple, ce qu'ils sont la numérisation et l'affichage à l'écran était en fait une image prise quelques secondes auparavant, et ainsi de suite.
Cela est dû à la lenteur de la CPU du Raspberry Pi. Ainsi, le
frame-rate
est beaucoup plus grand que le taux de notre logiciel permet de lire et d'analyse.Avec beaucoup d'efforts, j'ai enfin fait ce code, qui ont PEU de RETARD. Ainsi, lorsque vous lui donnez un QRCode/code à Barres, il vous donnera un résultat en moins d'une seconde.
L'astuce que j'utilise est expliqué dans le code.
Dans la ligne
scanner.de numérisation(image)
vous utilisez une variable qui n'a pas apparu dans le code avant. Parce que zbar est écrit en C, il n'a pas compris que la variable n'est pas définie, et la bibliothèque tente de lire les ordures de données comme s'il s'agissait d'une image. Par conséquent, l'erreur de segmentation. Je suppose que vous vouliez dire my_stream la place de l'image.
je suis en utilisant le QR décodage sur la framboise pour mon projet. Je l'ai résolu en utilisant
subprocces module.
Voici ma fonction pour QR de décodage:
Vous pouvez facilement ajouter des paramètres à la fonction comme img_widt et img_height
et modifier cette partie de code
à
si vous voulez différente de la taille de l'image pour le décodage.
Après la lecture de cette, j'ai été en mesure de venir avec un pythonic solution impliquant OpenCV.
D'abord, vous construire OpenCV sur la Pi par la suite ces instructions. Ce sera probablement prendre plusieurs heures pour terminer.
Maintenant redémarrer le Pi et utiliser le script suivant (en supposant que vous avez python-zbar installé) pour obtenir le QR/données de code à barres:
Note: j'ai dû tourner le Raspi l'objectif de la Caméra dans le sens antihoraire d'environ 1/4 - 1/3 de tour avant zbar était capable de détecter l'/QR codes à barres.
Avec le code ci-dessus, chaque fois que zbar détecte un/QR codes à barres, les données décodées sont imprimés dans la console. Il fonctionne en permanence, ne s'arrêtant que si le
n
touche est enfoncéePour quelqu'un qui est toujours à la recherche pour l'une des solutions à ce...
Ce code est moche, mais il fonctionne à partir d'une webcam assez bien, n'avez pas essayé le Pi caméra. Je suis nouveau sur python donc, c'est le mieux que je pouvais venir avec qui travaillé dans les deux Python2 et 3.
Faire un script bash appelé kill.sh et le rendre exécutable... (chmod -x)
Puis faire un appel système à partir de python comme si...
J'espère que cela aide les gens avec les mêmes questions dans le futur!
Tout à fait une réponse tardive, mais je suis tombé sur un certain nombre de questions tout en essayant d'obtenir Zbar de travail. Si j'étais à l'aide d'une webcam USB, mais j'ai dû installer plusieurs bibliothèques avant que je puisse faire pour installer zbar. J'ai installé fswebcam, python-zbar, libzbar-dev et finalement s'setup.py.
Plus important encore, le zbar à partir de sourceforge ne fonctionne pas pour moi, mais l'un de github, qui a un wrapper Python a fonctionné pour moi.
J'ai documenté mon étapes par étapes à http://techblog.saurabhkumar.com/2015/09/scanning-barcodes-using-raspberry-pi.html si cela peut aider
Juste une petite modifié à partir de Dan2theR, parce que je ne veux pas créer un autre fichier shell.