Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src/SugarBar.py
blob: cb4b3880525a2fa317427f9701564ddb6504bb01 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
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()