Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src/SugarBar.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/SugarBar.py')
-rw-r--r--src/SugarBar.py89
1 files changed, 89 insertions, 0 deletions
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()