From f891b3a18c952b88967f7408bb942ef3c0cd111f Mon Sep 17 00:00:00 2001 From: Rodrigo Perez Fulloni Date: Mon, 17 Dec 2012 22:24:44 +0000 Subject: Final version 1.0 --- (limited to 'src/SugarBar.py') diff --git a/src/SugarBar.py b/src/SugarBar.py new file mode 100644 index 0000000..cb4b388 --- /dev/null +++ b/src/SugarBar.py @@ -0,0 +1,89 @@ +# -*- coding: utf-8 -*- + +from ctypes import * +cdll.LoadLibrary("./libzbar.so.0.2.0") +import zbar + +import pygame +import pygame.camera +from pygame.locals import * + + + +pygame.init() +pygame.camera.init() + +class SugarBar: + SIZE = (320, 240) + + def __init__(self): + self.nueva = False + self.zImg = [] + self.cam = pygame.camera.Camera("/dev/video0", self.SIZE, "YUV") + self.cam.start() + + self.scanner = zbar.ImageScanner() + self.scanner.parse_config('disable') + self.scanner.parse_config('qrcode.enable') + self.scanner.enable_cache(True) + + self.grayImg = pygame.Surface(self.SIZE, depth=8) + self.grayImg.set_palette([(x, x, x) for x in xrange(255)]) + self.image = pygame.Surface(self.SIZE, depth=24) + + self.mostrarCam = False + + + def getAndAnalize(self): + if self.cam.query_image(): + self.nueva = True + self.cam.get_image(self.image) + arr3d = pygame.surfarray.pixels3d(self.image) + lumi = arr3d[0:self.SIZE[0], 0:self.SIZE[1], 0] + pygame.surfarray.blit_array(self.grayImg, lumi) + + imgString = pygame.image.tostring(self.grayImg, "P") + + self.zImg = zbar.Image(self.SIZE[0], self.SIZE[1], "Y800", imgString) + self.scanner.scan(self.zImg) + + decoded = [] + + for symbol in self.zImg: + decoded.append(symbol.data) + + return decoded + + def blitCameraImage(self, display, position): + if self.nueva: + display.blit(self.grayImg, position) + self.nueva = False + + def stop(self): + self.cam.stop() + + def main(self): + display = pygame.display.set_mode(self.SIZE) + going = True + while going: + events = pygame.event.get() + for e in events: + if e.type == QUIT or (e.type == KEYDOWN and e.key == K_ESCAPE): + # close the camera safely + self.cam.stop() + going = False + + elif e.type == KEYDOWN and e.key == pygame.K_c: + self.mostrarCam = not self.mostrarCam + + res = self.getAndAnalize() + if not res == []: + print res + if self.mostrarCam: + self.blitCameraImage(display, (0, 0)) + pygame.display.flip() + + +if __name__ == "__main__": + d = SugarBar() + d.main() -- cgit v0.9.1