コード例 #1
0
ファイル: planet.py プロジェクト: gandie/PlanetAppV2
class Planet(FloatLayout):

    base_image = ObjectProperty(None)
    select_overlay = ObjectProperty(None)

    # TODO: complete this!?
    shadow_overlay = ObjectProperty(None)

    # LOGIC
    logic = ObjectProperty(None)

    def __init__(self, **kwargs):
        super(Planet, self).__init__(**kwargs)
        self.logic = App.get_running_app().logic
        self.size = (100, 100)
        # TODO: better way to acquire default textures paths
        self.base_image = Image(
            size_hint=(1, 1),
            pos_hint={'x': 0, 'y': 0},
            source='./media/textures/planets/sandyone.png',
            allow_stretch=True
        )

        self.select_overlay = Image(
            size_hint=(1.25, 1.25),
            pos_hint={'x': -0.125, 'y': -0.125},
            source='./media/textures/picked/scope.png',
            allow_stretch=True
        )

        self.add_widget(self.base_image)

    def on_size(self, instance, value):
        if self.base_image:
            self.base_image.size = value
            if self.select_overlay:
                newsize = (self.base_image.size[0] * 1.5, self.base_image.size[1] * 1.5)
                self.select_overlay.size = newsize
                self.select_overlay.center = self.center

    def select(self):
        self.select_overlay.center = self.center
        self.add_widget(self.select_overlay)

    def unselect(self):
        self.remove_widget(self.select_overlay)

    def set_base_image(self, source):
        self.base_image.source = source
        self.base_image.reload()
コード例 #2
0
class MyGrid(GridLayout):
    def __init__(self, **kwargs):
        super(MyGrid, self).__init__(**kwargs)
        self.cols = 2

        self.inside = GridLayout()
        self.inside.cols = 1

        '''Text Input Widget from kivy'''

        self.inside.add_widget(Label(text="Webcam No: "))
        self.Webcam_no = TextInput(multiline=False)
        self.inside.add_widget(self.Webcam_no)

        self.inside.add_widget(Label(text="Distance for each eye: "))
        self.lastName = TextInput(multiline=False)
        self.inside.add_widget(self.lastName)

        self.inside.add_widget(Label(text="Distance for Both eyes: "))
        self.email = TextInput(multiline=False)
        self.inside.add_widget(self.email)

        self.inside.add_widget(Label(text="Max X Resolution: "))
        self.xres = TextInput(multiline=False)
        self.inside.add_widget(self.xres)
        
        self.Webcam_no.text = "1"
        self.lastName.text = "50"
        self.email.text = "100"
        self.xres.text = "1280"

        self.pb = ProgressBar()
        self.inside.add_widget(self.pb)

        self.inside.add_widget(Label(text=" "))

        '''Buttons Widget from kivy'''
        
        self.submit = Button(text="RUN FOR RIGHT EYE", font_size=30)
        self.submit.bind(on_press=self.pressedrunright)
        self.inside.add_widget(self.submit)

        self.submit = Button(text="RUN FOR LEFT EYE", font_size=30)
        self.submit.bind(on_press=self.pressedrunleft)
        self.inside.add_widget(self.submit)

        self.submit = Button(text="RUN FOR BOTH EYE", font_size=30)
        self.submit.bind(on_press=self.pressedrune)
        self.inside.add_widget(self.submit)
        
        self.inside.add_widget(Label(text=" "))
        
        self.add_widget(self.inside)
##########################################################
        self.inside2 = GridLayout()
        self.inside2.cols = 3
        
        self.submit = Button(text="Right eye: --<.>--", font_size=20)
        self.submit.bind(on_press=self.pressedrtw)
        self.inside2.add_widget(self.submit)
        
        self.submit = Button(text="Right eye: ----->", font_size=20)
        self.submit.bind(on_press=self.pressedrtq)
        self.inside2.add_widget(self.submit)

        self.submit = Button(text="Right eye: <-----", font_size=20)
        self.submit.bind(on_press=self.pressedrte)
        self.inside2.add_widget(self.submit)

        self.image1 = Image(source='./one/right/rightmid.jpg')
        self.image1.allow_stretch= True
        #self.image.height=5000
        self.inside2.add_widget(self.image1)

        self.image2 = Image(source='./one/right/right1.jpg')
        self.image2.allow_stretch= True
        self.inside2.add_widget(self.image2)

        self.image3 = Image(source='./one/right/right2.jpg')
        self.image3.allow_stretch= True
        self.inside2.add_widget(self.image3)

        self.inside2.add_widget(Label(text=" "))
        self.inside2.add_widget(Label(text=" "))
        self.inside2.add_widget(Label(text=" "))

        Clock.schedule_interval(self.update_pic,1)

        self.submit = Button(text="Left eye: --<.>--", font_size=20)
        self.submit.bind(on_press=self.pressedlfw)
        self.inside2.add_widget(self.submit)
        
        self.submit = Button(text="Left eye: ----->", font_size=20)
        self.submit.bind(on_press=self.pressedlfq)
        self.inside2.add_widget(self.submit)

        self.submit = Button(text="Left eye: <-----", font_size=20)
        self.submit.bind(on_press=self.pressedlfe)
        self.inside2.add_widget(self.submit)


        '''Disply Real Time Images taken'''
        self.image4 = Image(source='./one/left/leftmid.jpg')
        self.inside2.add_widget(self.image4)

        self.image5 = Image(source='./one/left/left1.jpg')
        self.inside2.add_widget(self.image5)

        self.image6 = Image(source='./one/left/left2.jpg')
        self.inside2.add_widget(self.image6)

        self.inside2.add_widget(Label(text=" "))
        self.inside2.add_widget(Label(text=" "))
        self.inside2.add_widget(Label(text=" "))

        Clock.schedule_interval(self.update_pic,1)

        self.submit = Button(text="Both eyes: --<.>--", font_size=20)
        self.submit.bind(on_press=self.pressedbmd)
        self.inside2.add_widget(self.submit)
        
        self.submit = Button(text="Both eye: ----->", font_size=20)
        self.submit.bind(on_press=self.pressedbrt)
        self.inside2.add_widget(self.submit)

        self.submit = Button(text="Both eye: <-----", font_size=20)
        self.submit.bind(on_press=self.pressedblf)
        self.inside2.add_widget(self.submit)

        self.image7 = Image(source='./both/bmd.jpg')
        self.inside2.add_widget(self.image7)

        self.image8 = Image(source='./both/brt.jpg')
        self.inside2.add_widget(self.image8)

        self.image9 = Image(source='./both/blf.jpg')
        self.inside2.add_widget(self.image9)

        Clock.schedule_interval(self.update_pic,1)
        
        self.add_widget(self.inside2)   

    '''Refresh Images Every 1 second'''

    def update_pic(self,dt):
        self.image1.reload()
        self.image2.reload()
        self.image3.reload()
        self.image4.reload()
        self.image5.reload()
        self.image6.reload()
        self.image7.reload()
        self.image8.reload()
        self.image9.reload()

    '''Button Click for Run for Both Eyes '''
        
    def pressedrune(self, instance):       
        dist_one = self.lastName.text

###     Refer Github Repo GazeML-keras @ https://github.com/shaoanlu/GazeML-keras
###     And Github Repo GazeML @ https://github.com/shaoanlu/GazeML-keras
        """## Instantiate GazeML ELG model

        ##A stacked hourglass framework for iris and eye-lid detection.
        """

        model = KerasELG()
        model.net.load_weights("./elg_weights/elg_keras.h5")
        
        
        cnt_both=0

        '''Loop over all combination of 3 images'''
        while(cnt_both<3):

            if cnt_both == 0:
                fn1 = "./both/bmd.jpg"
                input_img = cv2.imread(fn1)[..., ::-1]

            if cnt_both == 1:
                fn2 = "./both/brt.jpg"
                input_img = cv2.imread(fn2)[..., ::-1]

            if cnt_both == 2:
                fn3 = "./both/blf.jpg"
                input_img = cv2.imread(fn3)[..., ::-1]
                
            self.pb.value=20
            
            im_dim=input_img.shape
##            print("dimesnsions of image are:")
##            print("X=")
##            print(im_dim[1])
##            print("Y=")
##            print(im_dim[0])

            plt.title('Input image')
            plt.imshow(input_img)
            plt.show()

            #########################################################
            #cutting in half
            left_eye_im = input_img[
                int(0):int(im_dim[0]),
                int(im_dim[1]/2):int(im_dim[1]), :]
            #left_eye_im = left_eye_im[:,::-1,:] # No need for flipping left eye for iris detection
            right_eye_im = input_img[
                int(0):int(im_dim[0]),
                int(0):int(im_dim[1]/2), :]
            self.pb.value=30
            ##########################################################
            
##            plt.figure(figsize=(15,4))
##            plt.subplot(1,2,1)
##            plt.title('Left eye')
##            plt.imshow(left_eye_im)
##            plt.subplot(1,2,2)
##            plt.title('Right eye')
##            plt.imshow(right_eye_im)
##            plt.show()

            dim=left_eye_im.shape
##            print("dimensions are") 
##            print(dim[0])
##            print(dim[1])

            """## Preprocess eye images

            ELG has fixed input shape of (108, 180, 1).

            Input images are first converted to grey scale, thrown into the histogram equalization process, and finally rescaled to [-1, +1].
            """

            inp_left = cv2.cvtColor(left_eye_im, cv2.COLOR_RGB2GRAY)
            inp_left = cv2.equalizeHist(inp_left)
            inp_left = cv2.resize(inp_left, (180,108))[np.newaxis, ..., np.newaxis]

            inp_right = cv2.cvtColor(right_eye_im, cv2.COLOR_RGB2GRAY)
            inp_right = cv2.equalizeHist(inp_right)
            inp_right = cv2.resize(inp_right, (180,108))[np.newaxis, ..., np.newaxis]
            self.pb.value=50
            
##            plt.figure(figsize=(8,3))
##            plt.subplot(1,2,1)
##            plt.title('Left eye')
##            plt.imshow(inp_left[0,...,0], cmap="gray")
##            plt.subplot(1,2,2)
##            plt.title('Right eye')
##            plt.imshow(inp_right[0,...,0], cmap="gray")
##            plt.show()

            """## Predict eye region landmarks

            ELG forwardpass. Output shape: (36, 60, 18)
            """

            inp_left.shape, inp_right.shape

            input_array = np.concatenate([inp_left, inp_right], axis=0)
            pred_left, pred_right = model.net.predict(input_array/255 * 2 - 1)

            """## Visualize output heatmaps

            Eighteen heatmaps are predicted: 
            - Eight heatmaps for iris (green)
            - Eight heatmaps for eye-lid (red)
            - Two heatmaps for pupil (blue)
            """

            plt.figure(figsize=(10,4))
            plt.subplot(1,2,1)
            plt.axis('off')
            plt.title('Left eye heatmaps')
            hm_r = np.max(pred_left[...,:8], axis=-1, keepdims=True)
            hm_g = np.max(pred_left[...,8:16], axis=-1, keepdims=True)
            hm_b = np.max(pred_left[...,16:], axis=-1, keepdims=True)
            plt.imshow(np.concatenate([hm_r, hm_g, hm_b], axis=-1))
            plt.subplot(1,2,2)
            plt.axis('off')
            plt.title('Right eye heatmaps')
            hm_r = np.max(pred_right[...,:8], axis=-1, keepdims=True)
            hm_g = np.max(pred_right[...,8:16], axis=-1, keepdims=True)
            hm_b = np.max(pred_right[...,16:], axis=-1, keepdims=True)
            plt.imshow(np.concatenate([hm_r, hm_g, hm_b], axis=-1))
            plt.show()

            """# Draw eye region landmarks"""
            pnt_center=[]

            def draw_pupil(im, inp_im, lms):
                draw = im.copy()
                draw = cv2.resize(draw, (inp_im.shape[2], inp_im.shape[1]))
                pupil_center = np.zeros((2,))
                pnts_outerline = []
                pnts_innerline = []
                stroke = inp_im.shape[1] // 12 + 1
                for i, lm in enumerate(np.squeeze(lms)):
                    #print(lm)
                    y, x = int(lm[0]*3), int(lm[1]*3)

                    if i < 8:
                        #draw = cv2.circle(draw, (y, x), stroke, (125,255,125), -1)
                        pnts_outerline.append([y, x])
                    elif i < 16:
                        #draw = cv2.circle(draw, (y, x), stroke, (125,125,255), -1)
                        pnts_innerline.append([y, x])
                        pupil_center += (y,x)
                        
                pupil_center = (pupil_center/8).astype(np.int32)
                draw = cv2.cv2.circle(draw, (pupil_center[0], pupil_center[1]), stroke//6, (255,255,0), -1)        
                draw = cv2.polylines(draw, [np.array(pnts_outerline).reshape(-1,1,2)], isClosed=True, color=(125,255,125), thickness=stroke//5)
                draw = cv2.polylines(draw, [np.array(pnts_innerline).reshape(-1,1,2)], isClosed=True, color=(125,125,255), thickness=stroke//5)
                
                pnt_center.append(pupil_center[0])
                print(pupil_center[0])
                
                
                pnt_center.append(pupil_center[1])
                print(pupil_center[1])
                

                return draw

            
##            plt.figure(figsize=(15,4))
##            plt.subplot(1,2,1)
##            plt.title("Left eye")
            lms_left = model._calculate_landmarks(pred_left)
            result_left = draw_pupil(left_eye_im, inp_left, lms_left)
##            plt.imshow(result_left)
##            plt.subplot(1,2,2)
##            plt.title("Right eye")
            lms_right = model._calculate_landmarks(pred_right)
            result_right = draw_pupil(right_eye_im, inp_right, lms_right)
##            plt.imshow(result_right)
##            plt.show()
            
            
            draw2 = input_img.copy()
            dim2=input_img.shape

            '''Mapping Back to Original Img'''
            a=int(pnt_center[1]*(dim[0]/108)) 
            b=int(pnt_center[0]*(dim[1]/180) + int(im_dim[1]/2))
            c=int(pnt_center[3]*(dim[0]/108)) 
            d=int(pnt_center[2]*(dim[1]/180)) 

            print("left_eye Y")
            print(a)
            print("left_eye X")
            print(b)

            print("right_eye Y")
            print(c)
            print("right_eye X")
            print(d)

            slice_h = slice(int(0), int(im_dim[0]))
            slice_w = slice(int(im_dim[1]/2), int(im_dim[1]))
            im_shape = left_eye_im.shape[::-1]

            draw2[slice_h, slice_w, :] = cv2.resize(result_left, im_shape[1:])

            slice_h = slice(int(0), int(im_dim[0]))
            slice_w = slice(int(0), int(im_dim[1]/2))
            im_shape = right_eye_im.shape[::-1]

            net_dist=math.sqrt((a-c)*(a-c)+(b-d)*(b-d))
            draw2[slice_h, slice_w, :] = cv2.resize(result_right, im_shape[1:])
            plt.imshow(draw2)
##            plt.show()

            
            print("The net Distance between the pupil Centres is :")
            print(net_dist)
        
            measured=int(self.lastName.text)
            max_x_res=int(self.xres.text)
            print(round(net_dist*(measured/max_x_res),2))


            draw3=cv2.line(draw2, (b, a), (d, c), (255, 0, 0), 2)
            dim3=draw2.shape
            
            pnt_center=[]

            
            font = cv2.FONT_HERSHEY_SIMPLEX
            cv2.putText(draw3,str(net_dist),(0,0), font, 20,(0,255,0),2,cv2.LINE_AA)
            plt.figure(figsize=(10,10))
##            plt.imshow(draw2)
##            plt.show()
            plt.imshow(draw3)
            plt.show()
            
            cv2.waitKey(1)
            
            cnt_both+=1
        
    '''Button Click for Run for Right Eye '''

    def pressedrunright(self, instance):
        
        dist_both = self.email.text

        
###     Refer Github Repo GazeML-keras @ https://github.com/shaoanlu/GazeML-keras
###     And Github Repo GazeML @ https://github.com/shaoanlu/GazeML-keras

        """## Instantiate GazeML ELG model

        #A stacked hourglass framework for iris and eye-lid detection.
        """

        model = KerasELG()
        model.net.load_weights("./elg_weights/elg_keras.h5")

        cnt_one=0
        while cnt_one<3:
            
            if cnt_one==0:
                fnr = "./one/right/right1.jpg"
                right_eye_im = cv2.imread(fnr)[..., ::-1]
                dim_x1=right_eye_im.shape[1]
                dim_y1=right_eye_im.shape[0]
                
                fnl = "./one/right/right2.jpg"
                left_eye_im = cv2.imread(fnl)[..., ::-1]
                dim_x2=left_eye_im.shape[1]
                dim_y2=left_eye_im.shape[0]

            
            if cnt_one==1:
                fnr = "./one/right/right2.jpg"
                right_eye_im = cv2.imread(fnr)[..., ::-1]
                dim_x1=right_eye_im.shape[1]
                dim_y1=right_eye_im.shape[0]
                
                fnl = "./one/right/rightmid.jpg"
                left_eye_im = cv2.imread(fnl)[..., ::-1]
                dim_x2=left_eye_im.shape[1]
                dim_y2=left_eye_im.shape[0]
                

                img_name = "./output/right/rightmid2.jpg"
            if cnt_one==2:
                fnr = "./one/right/right1.jpg"
                right_eye_im = cv2.imread(fnr)[..., ::-1]
                dim_x1=right_eye_im.shape[1]
                dim_y1=right_eye_im.shape[0]
                
                fnl = "./one/right/rightmid.jpg"
                left_eye_im = cv2.imread(fnl)[..., ::-1]
                dim_x2=left_eye_im.shape[1]
                dim_y2=left_eye_im.shape[0]
                img_name = "./output/right/rightmid1.jpg"

                
            pupil_center_right_cp=right_eye_im.copy()
            pupil_center_left_cp=left_eye_im.copy()


            plt.subplot(1,2,1)
            plt.title('Input image')
            plt.imshow(right_eye_im)
            plt.subplot(1,2,2)
            plt.title('Input image')
            plt.imshow(left_eye_im)
            plt.show()
            
            inp_left = cv2.cvtColor(left_eye_im, cv2.COLOR_RGB2GRAY)
            inp_left = cv2.equalizeHist(inp_left)
            inp_left = cv2.resize(inp_left, (180,108))[np.newaxis, ..., np.newaxis]

            inp_right = cv2.cvtColor(right_eye_im, cv2.COLOR_RGB2GRAY)
            inp_right = cv2.equalizeHist(inp_right)
            inp_right = cv2.resize(inp_right, (180,108))[np.newaxis, ..., np.newaxis]

##            plt.figure(figsize=(8,3))
##            plt.subplot(1,2,1)
##            plt.title('Left eye')
##            plt.imshow(inp_left[0,...,0], cmap="gray")
##            plt.subplot(1,2,2)
##            plt.title('Right eye')
##            plt.imshow(inp_right[0,...,0], cmap="gray")
##            plt.show()
            
            """## Predict eye region landmarks

            ELG forwardpass.
            """

            inp_left.shape, inp_right.shape

            input_array = np.concatenate([inp_left, inp_right], axis=0)
            pred_left, pred_right = model.net.predict(input_array/255 * 2 - 1)

            """## Visualize output heatmaps

            Eighteen heatmaps are predicted: 
            - Eight heatmaps for iris (green)
            - Eight heatmaps for eye-lid (red)
            - Two heatmaps for pupil (blue)
            """

            #@title
            plt.figure(figsize=(10,4))
            plt.subplot(1,2,1)
            plt.axis('off')
            plt.title('Eye heatmaps')
            hm_r = np.max(pred_left[...,:8], axis=-1, keepdims=True)
            hm_g = np.max(pred_left[...,8:16], axis=-1, keepdims=True)
            hm_b = np.max(pred_left[...,16:], axis=-1, keepdims=True)
            plt.imshow(np.concatenate([hm_r, hm_g, hm_b], axis=-1))
            plt.subplot(1,2,2)
            plt.axis('off')
            plt.title('Eye heatmaps')
            hm_r = np.max(pred_right[...,:8], axis=-1, keepdims=True)
            hm_g = np.max(pred_right[...,8:16], axis=-1, keepdims=True)
            hm_b = np.max(pred_right[...,16:], axis=-1, keepdims=True)
            plt.imshow(np.concatenate([hm_r, hm_g, hm_b], axis=-1))
            plt.show()
            
            """# Draw eye region landmarks"""

            def draw_pupil(im, inp_im, lms):
                draw = im.copy()
                draw = cv2.resize(draw, (inp_im.shape[2], inp_im.shape[1]))
                pupil_center = np.zeros((2,))
                pnts_outerline = []
                pnts_innerline = []
                stroke = inp_im.shape[1] // 12 + 1
                
                for i, lm in enumerate(np.squeeze(lms)):
                    y, x = int(lm[0]*3), int(lm[1]*3)

                    if i < 8:
                        pnts_outerline.append([y, x])
                    elif i < 16:
                        pnts_innerline.append([y, x])
                        pupil_center += (y,x)
                
                pupil_center = (pupil_center/8).astype(np.int32)
                draw = cv2.cv2.circle(draw, (pupil_center[0], pupil_center[1]), 1, (255,255,0), -1)        
                draw = cv2.polylines(draw, [np.array(pnts_outerline).reshape(-1,1,2)], isClosed=True, color=(125,255,125), thickness=stroke//4)
                draw = cv2.polylines(draw, [np.array(pnts_innerline).reshape(-1,1,2)], isClosed=True, color=(125,125,255), thickness=stroke//4)
                return draw, pupil_center

            plt.figure(figsize=(15,4))
            plt.subplot(1,2,1)

            lms_left = model._calculate_landmarks(pred_left)
            result_left, pupil_center_left = draw_pupil(left_eye_im, inp_left, lms_left)
            plt.imshow(result_left)
            #print(pupil_center_left)

            plt.subplot(1,2,2)
            lms_right = model._calculate_landmarks(pred_right)
            result_right, pupil_center_right = draw_pupil(right_eye_im, inp_right, lms_right)
            plt.imshow(result_right)
            #print(pupil_center_right)
            plt.show()

            plt.figure(figsize=(15,4))
            plt.subplot(1,2,1)
            ratio_x1=dim_x2/180
            #print(ratio_x1)
            #print(pupil_center_left[0])
            pupil_center_left[0]=int((pupil_center_left[0])*(ratio_x1))
            ratio_y1=dim_y2/108
            pupil_center_left[1]=int(pupil_center_left[1]*ratio_y1)
            pupil_center_left_cp = cv2.cv2.circle(pupil_center_left_cp, (pupil_center_left[0], pupil_center_left[1]), 10, (255,255,0), -1)
            print(pupil_center_left)
            plt.imshow(pupil_center_left_cp)

            plt.subplot(1,2,2)
            ratio_x2=dim_x1/180
            ratio_y2=dim_y1/108
            pupil_center_right[0]=int(pupil_center_right[0]*ratio_x2)
            pupil_center_right[1]=int(pupil_center_right[1]*ratio_y2)
            pupil_center_right_cp = cv2.cv2.circle(pupil_center_right_cp, (pupil_center_right[0], pupil_center_right[1]), 10, (255,255,0), -1)
            print(pupil_center_right)
            plt.imshow(pupil_center_right_cp)
            
            dist_bet_centre = np.linalg.norm(pupil_center_left - pupil_center_right)
            print(dist_bet_centre)
            print("pixel")
            measured=int(self.lastName.text)
            max_x_res=int(self.xres.text)
            print(round(dist_bet_centre*(measured/max_x_res),2))
            print("in mm")

            result = np.zeros((100,100,3), np.uint8)
            
            font = cv2.FONT_HERSHEY_SIMPLEX
            cv2.putText(result, str(round(dist_bet_centre*(measured/max_x_res),2))  , (0, 0), font, 1, (0, 255, 0), 2, cv2.LINE_AA)
            cv2.imshow(result)

            pnt_center=[]
            
            #plt.show()

            cnt_one+=1
        
    '''Button Click for Run for Left Eye '''
    def pressedrunleft(self, instance):
        dist_both = self.email.text


###     Refer Github Repo GazeML-keras @ https://github.com/shaoanlu/GazeML-keras
###     And Github Repo GazeML @ https://github.com/shaoanlu/GazeML-keras

        """## Instantiate GazeML ELG model

        #A stacked hourglass framework for iris and eye-lid detection.
        """

        model = KerasELG()
        model.net.load_weights("./elg_weights/elg_keras.h5")

        cnt_one_lf=0
        while cnt_one_lf<3:
            
            if cnt_one_lf==0:
                fnr = "./one/left/left1.jpg"
                right_eye_im = cv2.imread(fnr)[..., ::-1]
                dim_x1=right_eye_im.shape[1]
                dim_y1=right_eye_im.shape[0]
                
                fnl = "./one/left/left2.jpg"
                left_eye_im = cv2.imread(fnl)[..., ::-1]
                dim_x2=left_eye_im.shape[1]
                dim_y2=left_eye_im.shape[0]
            
            if cnt_one_lf==1:
                fnr = "./one/left/left2.jpg"
                right_eye_im = cv2.imread(fnr)[..., ::-1]
                dim_x1=right_eye_im.shape[1]
                dim_y1=right_eye_im.shape[0]
                
                fnl = "./one/left/leftmid.jpg"
                left_eye_im = cv2.imread(fnl)[..., ::-1]
                dim_x2=left_eye_im.shape[1]
                dim_y2=left_eye_im.shape[0]

                
            if cnt_one_lf==2:
                fnr = "./one/left/left1.jpg"
                right_eye_im = cv2.imread(fnr)[..., ::-1]
                dim_x1=right_eye_im.shape[1]
                dim_y1=right_eye_im.shape[0]
                
                fnl = "./one/left/leftmid.jpg"
                left_eye_im = cv2.imread(fnl)[..., ::-1]
                dim_x2=left_eye_im.shape[1]
                dim_y2=left_eye_im.shape[0]
                
                
            pupil_center_right_cp=right_eye_im.copy()
            pupil_center_left_cp=left_eye_im.copy()



            plt.subplot(1,2,1)
            plt.title('Input image')
            plt.imshow(right_eye_im)
            plt.subplot(1,2,2)
            plt.title('Input image')
            plt.imshow(left_eye_im)
            plt.show()
            
            inp_left = cv2.cvtColor(left_eye_im, cv2.COLOR_RGB2GRAY)
            inp_left = cv2.equalizeHist(inp_left)
            inp_left = cv2.resize(inp_left, (180,108))[np.newaxis, ..., np.newaxis]

            inp_right = cv2.cvtColor(right_eye_im, cv2.COLOR_RGB2GRAY)
            inp_right = cv2.equalizeHist(inp_right)
            inp_right = cv2.resize(inp_right, (180,108))[np.newaxis, ..., np.newaxis]

##            plt.figure(figsize=(8,3))
##            plt.subplot(1,2,1)
##            #plt.title('Left eye')
##            plt.imshow(inp_left[0,...,0], cmap="gray")
##            plt.subplot(1,2,2)
##            #plt.title('Right eye')
##            plt.imshow(inp_right[0,...,0], cmap="gray")
##            plt.show()

            """## Predict eye region landmarks

            ELG forwardpass. Output shape: (36, 60, 18)
            """

            inp_left.shape, inp_right.shape

            input_array = np.concatenate([inp_left, inp_right], axis=0)
            pred_left, pred_right = model.net.predict(input_array/255 * 2 - 1)

            """## Visualize output heatmaps

            Eighteen heatmaps are predicted: 
            - Eight heatmaps for iris (green)
            - Eight heatmaps for eye-lid (red)
            - Two heatmaps for pupil (blue)
            """

            #@title
            plt.figure(figsize=(10,4))
            plt.subplot(1,2,1)
            plt.axis('off')
            plt.title('Left eye heatmaps')
            hm_r = np.max(pred_left[...,:8], axis=-1, keepdims=True)
            hm_g = np.max(pred_left[...,8:16], axis=-1, keepdims=True)
            hm_b = np.max(pred_left[...,16:], axis=-1, keepdims=True)
            plt.imshow(np.concatenate([hm_r, hm_g, hm_b], axis=-1))
            plt.subplot(1,2,2)
            plt.axis('off')
            plt.title('Right eye heatmaps')
            hm_r = np.max(pred_right[...,:8], axis=-1, keepdims=True)
            hm_g = np.max(pred_right[...,8:16], axis=-1, keepdims=True)
            hm_b = np.max(pred_right[...,16:], axis=-1, keepdims=True)
            plt.imshow(np.concatenate([hm_r, hm_g, hm_b], axis=-1))
            plt.show()

            """# Draw eye region landmarks"""

            def draw_pupil(im, inp_im, lms):
                draw = im.copy()
                draw = cv2.resize(draw, (inp_im.shape[2], inp_im.shape[1]))
                pupil_center = np.zeros((2,))
                pnts_outerline = []
                pnts_innerline = []
                stroke = inp_im.shape[1] // 12 + 1
                
                for i, lm in enumerate(np.squeeze(lms)):
                    y, x = int(lm[0]*3), int(lm[1]*3)

                    if i < 8:
                        pnts_outerline.append([y, x])
                    elif i < 16:
                        pnts_innerline.append([y, x])
                        pupil_center += (y,x)
                
                pupil_center = (pupil_center/8).astype(np.int32)
                draw = cv2.cv2.circle(draw, (pupil_center[0], pupil_center[1]), 1, (255,255,0), -1)        
                draw = cv2.polylines(draw, [np.array(pnts_outerline).reshape(-1,1,2)], isClosed=True, color=(125,255,125), thickness=stroke//4)
                draw = cv2.polylines(draw, [np.array(pnts_innerline).reshape(-1,1,2)], isClosed=True, color=(125,125,255), thickness=stroke//4)
                return draw, pupil_center

            plt.figure(figsize=(15,4))
            plt.subplot(1,2,1)
            lms_left = model._calculate_landmarks(pred_left)
            result_left, pupil_center_left = draw_pupil(left_eye_im, inp_left, lms_left)
            plt.imshow(result_left)
            print(pupil_center_left)

            plt.subplot(1,2,2)
            lms_right = model._calculate_landmarks(pred_right)
            result_right, pupil_center_right = draw_pupil(right_eye_im, inp_right, lms_right)
            plt.imshow(result_right)
            print(pupil_center_right)
            plt.show()

            plt.figure(figsize=(15,4))
            plt.subplot(1,2,1)
            ratio_x1=dim_x2/180
            print(ratio_x1)
            print(pupil_center_left[0])
            pupil_center_left[0]=int((pupil_center_left[0])*(ratio_x1))
            ratio_y1=dim_y2/108
            pupil_center_left[1]=int(pupil_center_left[1]*ratio_y1)
            pupil_center_left_cp = cv2.cv2.circle(pupil_center_left_cp, (pupil_center_left[0], pupil_center_left[1]), 10, (255,255,0), -1)
            print(pupil_center_left)
            plt.imshow(pupil_center_left_cp)

            plt.subplot(1,2,2)
            ratio_x2=dim_x1/180
            ratio_y2=dim_y1/108
            pupil_center_right[0]=int(pupil_center_right[0]*ratio_x2)
            pupil_center_right[1]=int(pupil_center_right[1]*ratio_y2)
            pupil_center_right_cp = cv2.cv2.circle(pupil_center_right_cp, (pupil_center_right[0], pupil_center_right[1]), 10, (255,255,0), -1)
            print(pupil_center_right)
            plt.imshow(pupil_center_right_cp)

            dist_bet_centre = np.linalg.norm(pupil_center_left - pupil_center_right)
            print(dist_bet_centre)
            print("pixel")
            measured=int(self.lastName.text)
            max_x_res=int(self.xres.text)
            print(round(dist_bet_centre*(measured/max_x_res),2))

            pnt_center=[]
            #plt.show()
            
            cnt_one_lf+=1
        
    ''''Buttonn Clicks for taking Images from Webcam'''       
    def pressedrtw(self, instance):
        ##specify which camera(button)
        web = self.Webcam_no.text
        cam = cv2.VideoCapture(int(web))

        cv2.namedWindow("Camera")

        while True:
            ret, frame = cam.read()
            cv2.imshow("Camera", frame)
            if not ret:
                break

            k = cv2.waitKey(1)

            if k%256 == 27:
                # ESC pressed
                print("Escape hit, closing...")
                break
            elif k%256 == 32:
                # SPACE pressed
                img_name = "./one/right/rightmid.jpg"
                cv2.imwrite(img_name, frame)
                print("written!".format(img_name))
                break
        cam.release()

        cv2.destroyWindow('Camera')
            
    def pressedrtq(self, instance):
        ##specify which camera(button)
        web = self.Webcam_no.text
        cam = cv2.VideoCapture(int(web))

        cv2.namedWindow("Camera")

        while True:
            ret, frame = cam.read()
            cv2.imshow("Camera", frame)
            if not ret:
                break

            k = cv2.waitKey(1)

            if k%256 == 27:
                # ESC pressed
                print("Escape hit, closing...")
                break
            elif k%256 == 32:
                # SPACE pressed
                img_name = "./one/right/right1.jpg"
                cv2.imwrite(img_name, frame)
                print("written!".format(img_name))
                break
        cam.release()

        cv2.destroyWindow('Camera')

    ''''Buttonn Clicks for taking Images from Webcam'''        
    def pressedrte(self, instance):
        ##specify which camera(button)
        web = self.Webcam_no.text
        cam = cv2.VideoCapture(int(web))

        cv2.namedWindow("Camera")

        while True:
            ret, frame = cam.read()
            cv2.imshow("Camera", frame)
            if not ret:
                break

            k = cv2.waitKey(1)

            if k%256 == 27:
                # ESC pressed
                print("Escape hit, closing...")
                break
            elif k%256 == 32:
                # SPACE pressed
                img_name = "./one/right/right2.jpg"
                cv2.imwrite(img_name, frame)
                print("written!".format(img_name))
                break
        cam.release()

        cv2.destroyWindow('Camera')

    def pressedlfw(self, instance):
        ##specify which camera(button)
        web = self.Webcam_no.text
        cam = cv2.VideoCapture(int(web))

        cv2.namedWindow("Camera")

        while True:
            ret, frame = cam.read()
            cv2.imshow("Camera", frame)
            if not ret:
                break

            k = cv2.waitKey(1)

            if k%256 == 27:
                # ESC pressed
                print("Escape hit, closing...")
                break
            elif k%256 == 32:
                # SPACE pressed
                img_name = "./one/left/leftmid.jpg"
                cv2.imwrite(img_name, frame)
                print("written!".format(img_name))
                break
        cam.release()

        cv2.destroyWindow('Camera')

    def pressedlfq(self, instance):
            ##specify which camera(button)
            web = self.Webcam_no.text
            cam = cv2.VideoCapture(int(web))

            cv2.namedWindow("Camera")

            while True:
                ret, frame = cam.read()
                cv2.imshow("Camera", frame)
                if not ret:
                    break

                k = cv2.waitKey(1)

                if k%256 == 27:
                    # ESC pressed
                    print("Escape hit, closing...")
                    break
                elif k%256 == 32:
                    # SPACE pressed
                    img_name = "./one/left/left1.jpg"
                    cv2.imwrite(img_name, frame)
                    print("written!")
                    break
                
            cam.release()

            cv2.destroyWindow('Camera')

    def pressedlfe(self, instance):
            ##specify which camera(button)
            web = self.Webcam_no.text
            cam = cv2.VideoCapture(int(web))

            cv2.namedWindow("Camera")

            while True:
                ret, frame = cam.read()
                cv2.imshow("Camera", frame)
                if not ret:
                    break

                k = cv2.waitKey(1)

                if k%256 == 27:
                    # ESC pressed
                    print("Escape hit, closing...")
                    break
                elif k%256 == 32:
                    # SPACE pressed
                    img_name = "./one/left/left2.jpg"
                    cv2.imwrite(img_name, frame)
                    print("written!")
                    break
                
            cam.release()

            cv2.destroyWindow('Camera')

    def pressedbmd(self, instance):
        ##specify which camera(button)
        web = self.Webcam_no.text
        cam = cv2.VideoCapture(int(web))

        cv2.namedWindow("Camera")

        while True:
            ret, frame = cam.read()
            cv2.imshow("Camera", frame)
            if not ret:
                break

            k = cv2.waitKey(1)

            if k%256 == 27:
                # ESC pressed
                print("Escape hit, closing...")
                break
            elif k%256 == 32:
                # SPACE pressed
                img_name = "./both/bmd.jpg"
                cv2.imwrite(img_name, frame)
                print("written!".format(img_name))
                break
        cam.release()

        cv2.destroyWindow('Camera')
        
    def pressedbrt(self, instance):
        ##specify which camera(button)
        cam = cv2.VideoCapture(0)

        cv2.namedWindow("Camera")

        while True:
            ret, frame = cam.read()
            cv2.imshow("Camera", frame)
            if not ret:
                break

            k = cv2.waitKey(1)

            if k%256 == 27:
                # ESC pressed
                print("Escape hit, closing...")
                break
            elif k%256 == 32:
                # SPACE pressed
                img_name = "./both/brt.jpg"
                cv2.imwrite(img_name, frame)
                print("written!".format(img_name))
                break
        cam.release()

        cv2.destroyWindow('Camera')

    def pressedblf(self, instance):
        ##specify which camera(button)
        web = self.Webcam_no.text
        cam = cv2.VideoCapture(int(web))

        cv2.namedWindow("Camera")

        while True:
            ret, frame = cam.read()
            cv2.imshow("Camera", frame)
            if not ret:
                break

            k = cv2.waitKey(1)

            if k%256 == 27:
                # ESC pressed
                print("Escape hit, closing...")
                break
            elif k%256 == 32:
                # SPACE pressed
                img_name = "./both/blf.jpg"
                cv2.imwrite(img_name, frame)
                print("written!".format(img_name))
                break
        cam.release()

        cv2.destroyWindow('Camera')
コード例 #3
0
ファイル: run.py プロジェクト: Vegasq/moose-in-rocket
class Rocket(Widget):
    default_y = dp(10)
    y = NumericProperty(dp(10))
    x = NumericProperty(Window.width/2 - Sizer.get_rocket_size()[0]/2)
    force = BooleanProperty(False)
    dead = False

    def __init__(self, **kwargs):
        super(Rocket, self).__init__(**kwargs)
        self.x = Window.width/2 - Sizer.get_rocket_size()[0]/2
        size = (resources.rocket['width'], resources.rocket['height'])

        with self.canvas:
            self.image = Image(source=resources.rocket['sprite2'],
                               pos=(self.x, self.y),
                               size=size)

    def move(self):
        if self.dead:
            if self.image.pos[0] > resources.rocket['width'] * -1 and\
                    self.image.pos[1] > resources.rocket['height'] * -1:
                self.image.pos = (self.image.pos[0] - dp(20),
                                  self.image.pos[1] - dp(20))
                self.image.size = (self.image.size[0] - dp(25),
                                   self.image.size[1] - dp(10))
            return

        if self.force:
            self.image.source = resources.rocket['sprite1']
            self.image.reload()
            # if self.image.pos[1] < (Window.height - self.default_y - 150):
            #     self.die()
            self.image.pos = (self.image.pos[0], self.image.pos[1] + Sizer.get_rocket_speed())
            self.pos = (self.image.pos[0], self.image.pos[1] + Sizer.get_rocket_speed())
        else:
            self.image.source = resources.rocket['sprite2']
            self.image.reload()

            self.image.pos = (self.image.pos[0], self.image.pos[1] - Sizer.get_rocket_speed())
            self.pos = (self.image.pos[0], self.image.pos[1] - Sizer.get_rocket_speed())

            if (
                self.image.pos[1] < (self.image.size[1] / 2) * -1 or
                self.image.pos[1] > Window.height + self.image.size[1]
            ):
                self.die()

    def die(self):
        self.dead = True

    def restart(self):
        self.dead = False
        self.default_y = dp(10)
        self.y = dp(10)
        self.x = Window.width/2 - Sizer.get_rocket_size()[0]/2
        self.force = False
        self.pos = (self.x, self.y)
        self.image.pos = (self.x, self.y)
        self.image.size = (resources.rocket['width'], resources.rocket['height'])
        self.image.source = resources.rocket['sprite2']
        self.image.reload()
        Block.reset_speed()
コード例 #4
0
class MyGrid(GridLayout):
    def __init__(self, **kwargs):
        super(MyGrid, self).__init__(**kwargs)
        self.cols = 2

        self.inside = GridLayout()
        self.inside.cols = 1

        self.inside.add_widget(Label(text="Name: "))
        self.name = TextInput(multiline=False)
        self.inside.add_widget(self.name)

        self.inside.add_widget(Label(text="Distance for each eye: "))
        self.lastName = TextInput(multiline=False)
        self.inside.add_widget(self.lastName)

        self.inside.add_widget(Label(text="Distance for Both eyes: "))
        self.email = TextInput(multiline=False)
        self.inside.add_widget(self.email)

        self.inside.add_widget(Label(text="Max X Resolution: "))
        self.xres = TextInput(multiline=False)
        self.inside.add_widget(self.xres)
        
        self.name.text = ""
        self.lastName.text = "50"
        self.email.text = "1000000"
        self.xres.text = "1280"

        self.pb = ProgressBar()
        self.inside.add_widget(self.pb)

        self.inside.add_widget(Label(text=" "))
        
        self.submit = Button(text="RUN FOR RIGHT EYE", font_size=30)
        self.submit.bind(on_press=self.pressedrunright)
        self.inside.add_widget(self.submit)

        self.submit = Button(text="RUN FOR LEFT EYE", font_size=30)
        self.submit.bind(on_press=self.pressedrunleft)
        self.inside.add_widget(self.submit)

        self.submit = Button(text="RUN FOR BOTH EYE", font_size=30)
        self.submit.bind(on_press=self.pressedrune)
        self.inside.add_widget(self.submit)
        
        self.inside.add_widget(Label(text=" "))

        self.submit = Button(text="SHOW RESULTS", font_size=20)
        self.submit.bind(on_press=self.pressresults)
        self.inside.add_widget(self.submit)

        
        self.add_widget(self.inside)
##########################################################
        self.inside2 = GridLayout()
        self.inside2.cols = 3

        self.submit = Button(text="Right eye: --<.>--", font_size=20)
        self.submit.bind(on_press=self.pressedrtw)
        self.inside2.add_widget(self.submit)
        
        self.submit = Button(text="Right eye: ----->", font_size=20)
        self.submit.bind(on_press=self.pressedrtq)
        self.inside2.add_widget(self.submit)

        self.submit = Button(text="Right eye: <-----", font_size=20)
        self.submit.bind(on_press=self.pressedrte)
        self.inside2.add_widget(self.submit)

        self.image1 = Image(source='./one/right/rightmid.jpg')
        self.image1.allow_stretch= True
        #self.image.height=5000
        self.inside2.add_widget(self.image1)

        self.image2 = Image(source='./one/right/right1.jpg')
        self.image2.allow_stretch= True
        self.inside2.add_widget(self.image2)

        self.image3 = Image(source='./one/right/right2.jpg')
        self.image3.allow_stretch= True
        self.inside2.add_widget(self.image3)

        self.inside2.add_widget(Label(text=" "))
        self.inside2.add_widget(Label(text=" "))
        self.inside2.add_widget(Label(text=" "))

        Clock.schedule_interval(self.update_pic,1)

        self.submit = Button(text="Left eye: --<.>--", font_size=20)
        self.submit.bind(on_press=self.pressedlfw)
        self.inside2.add_widget(self.submit)
        
        self.submit = Button(text="Left eye: ----->", font_size=20)
        self.submit.bind(on_press=self.pressedlfq)
        self.inside2.add_widget(self.submit)

        self.submit = Button(text="Left eye: <-----", font_size=20)
        self.submit.bind(on_press=self.pressedlfe)
        self.inside2.add_widget(self.submit)

        self.image4 = Image(source='./one/left/leftmid.jpg')
        self.inside2.add_widget(self.image4)

        self.image5 = Image(source='./one/left/left1.jpg')
        self.inside2.add_widget(self.image5)

        self.image6 = Image(source='./one/left/left2.jpg')
        self.inside2.add_widget(self.image6)

        self.inside2.add_widget(Label(text=" "))
        self.inside2.add_widget(Label(text=" "))
        self.inside2.add_widget(Label(text=" "))

        Clock.schedule_interval(self.update_pic,1)

        self.submit = Button(text="Both eyes: --<.>--", font_size=20)
        self.submit.bind(on_press=self.pressedbmd)
        self.inside2.add_widget(self.submit)
        
        self.submit = Button(text="Both eye: ----->", font_size=20)
        self.submit.bind(on_press=self.pressedbrt)
        self.inside2.add_widget(self.submit)

        self.submit = Button(text="Both eye: <-----", font_size=20)
        self.submit.bind(on_press=self.pressedblf)
        self.inside2.add_widget(self.submit)

        self.image7 = Image(source='./both/bmd.jpg')
##        self.image.size_hint_y= None
##        self.image.size_hint_x= None
##        self.image.width=100
##        self.image.height=50
##        self.image.allow_stretch= True
##        #self.image.height=5000
        self.inside2.add_widget(self.image7)

        self.image8 = Image(source='./both/brt.jpg')
        self.inside2.add_widget(self.image8)

        self.image9 = Image(source='./both/blf.jpg')
        self.inside2.add_widget(self.image9)

        Clock.schedule_interval(self.update_pic,1)
        
        self.add_widget(self.inside2)   

    def update_pic(self,dt):
        self.image1.reload()
        self.image2.reload()
        self.image3.reload()
        self.image4.reload()
        self.image5.reload()
        self.image6.reload()
        self.image7.reload()
        self.image8.reload()
        self.image9.reload()

    def pressresults(self,instance):
        Eye_Squint_Detector().stop() 
        r.Results().run()

        
    def pressedrune(self, instance):
        self.pb.value=10
        
        name = self.name.text
        dist_one = self.lastName.text

        print("Name:", name)

        """## Instantiate GazeML ELG model

        ##A stacked hourglass framework for iris and eye-lid detection.
        """

        model = KerasELG()
        model.net.load_weights("./elg_weights/elg_keras.h5")
        
        self.pb.value=10
        
        cnt_both=0
        
        while(cnt_both<3):

            if cnt_both == 0:
                fn1 = "./both/bmd.jpg"
                input_img = cv2.imread(fn1)[..., ::-1]

            if cnt_both == 1:
                fn2 = "./both/brt.jpg"
                input_img = cv2.imread(fn2)[..., ::-1]

            if cnt_both == 2:
                fn3 = "./both/blf.jpg"
                input_img = cv2.imread(fn3)[..., ::-1]
                
            self.pb.value=20
            
            im_dim=input_img.shape
            print("dimesnsions of image are:")
            print("X=")
            print(im_dim[1])
            print("Y=")
            print(im_dim[0])

            plt.title('Input image')
            plt.imshow(input_img)
            plt.show()

            #########################################################
            #cutting in half
            left_eye_im = input_img[
                int(0):int(im_dim[0]),
                int(im_dim[1]/2):int(im_dim[1]), :]
            #left_eye_im = left_eye_im[:,::-1,:] # No need for flipping left eye for iris detection
            right_eye_im = input_img[
                int(0):int(im_dim[0]),
                int(0):int(im_dim[1]/2), :]
            self.pb.value=30
            ##########################################################
            
            plt.figure(figsize=(15,4))
            plt.subplot(1,2,1)
            plt.title('Left eye')
            plt.imshow(left_eye_im)
            plt.subplot(1,2,2)
            plt.title('Right eye')
            plt.imshow(right_eye_im)
            plt.show()

            dim=left_eye_im.shape
            print("dimensions are") 
            print(dim[0])
            print(dim[1])

            """## Preprocess eye images

            ELG has fixed input shape of (108, 180, 1).

            Input images are first converted to grey scale, thrown into the histogram equalization process, and finally rescaled to [-1, +1].
            """

            inp_left = cv2.cvtColor(left_eye_im, cv2.COLOR_RGB2GRAY)
            inp_left = cv2.equalizeHist(inp_left)
            inp_left = cv2.resize(inp_left, (180,108))[np.newaxis, ..., np.newaxis]

            inp_right = cv2.cvtColor(right_eye_im, cv2.COLOR_RGB2GRAY)
            inp_right = cv2.equalizeHist(inp_right)
            inp_right = cv2.resize(inp_right, (180,108))[np.newaxis, ..., np.newaxis]
            self.pb.value=50
            
            plt.figure(figsize=(8,3))
            plt.subplot(1,2,1)
            plt.title('Left eye')
            plt.imshow(inp_left[0,...,0], cmap="gray")
            plt.subplot(1,2,2)
            plt.title('Right eye')
            plt.imshow(inp_right[0,...,0], cmap="gray")
            plt.show()

            """## Predict eye region landmarks

            ELG forwardpass. Output shape: (36, 60, 18)
            """

            inp_left.shape, inp_right.shape

            input_array = np.concatenate([inp_left, inp_right], axis=0)
            pred_left, pred_right = model.net.predict(input_array/255 * 2 - 1)

            """## Visualize output heatmaps

            Eighteen heatmaps are predicted: 
            - Eight heatmaps for iris (green)
            - Eight heatmaps for eye-lid (red)
            - Two heatmaps for pupil (blue)
            """

            plt.figure(figsize=(10,4))
            plt.subplot(1,2,1)
            plt.axis('off')
            plt.title('Left eye heatmaps')
            hm_r = np.max(pred_left[...,:8], axis=-1, keepdims=True)
            hm_g = np.max(pred_left[...,8:16], axis=-1, keepdims=True)
            hm_b = np.max(pred_left[...,16:], axis=-1, keepdims=True)
            plt.imshow(np.concatenate([hm_r, hm_g, hm_b], axis=-1))
            plt.subplot(1,2,2)
            plt.axis('off')
            plt.title('Right eye heatmaps')
            hm_r = np.max(pred_right[...,:8], axis=-1, keepdims=True)
            hm_g = np.max(pred_right[...,8:16], axis=-1, keepdims=True)
            hm_b = np.max(pred_right[...,16:], axis=-1, keepdims=True)
            plt.imshow(np.concatenate([hm_r, hm_g, hm_b], axis=-1))
            plt.show()
            self.pb.value=70

            """# Draw eye region landmarks"""
            pnt_center=[]

            def draw_pupil(im, inp_im, lms):
                draw = im.copy()
                draw = cv2.resize(draw, (inp_im.shape[2], inp_im.shape[1]))
                pupil_center = np.zeros((2,))
                pnts_outerline = []
                pnts_innerline = []
                stroke = inp_im.shape[1] // 12 + 1
                for i, lm in enumerate(np.squeeze(lms)):
                    #print(lm)
                    y, x = int(lm[0]*3), int(lm[1]*3)

                    if i < 8:
                        #draw = cv2.circle(draw, (y, x), stroke, (125,255,125), -1)
                        pnts_outerline.append([y, x])
                    elif i < 16:
                        #draw = cv2.circle(draw, (y, x), stroke, (125,125,255), -1)
                        pnts_innerline.append([y, x])
                        pupil_center += (y,x)
                #     elif i < 17:
                #         draw = cv2.drawMarker(draw, (y, x), (255,200,200), markerType=cv2.MARKER_CROSS, markerSize=5, thickness=stroke, line_type=cv2.LINE_AA)
                #     else:
                #         draw = cv2.drawMarker(draw, (y, x), (255,125,125), markerType=cv2.MARKER_CROSS, markerSize=5, thickness=stroke, line_type=cv2.LINE_AA)
                pupil_center = (pupil_center/8).astype(np.int32)
                draw = cv2.cv2.circle(draw, (pupil_center[0], pupil_center[1]), stroke//6, (255,255,0), -1)        
                draw = cv2.polylines(draw, [np.array(pnts_outerline).reshape(-1,1,2)], isClosed=True, color=(125,255,125), thickness=stroke//5)
                draw = cv2.polylines(draw, [np.array(pnts_innerline).reshape(-1,1,2)], isClosed=True, color=(125,125,255), thickness=stroke//5)
                
                pnt_center.append(pupil_center[0])
                print(pupil_center[0])
                
                
                pnt_center.append(pupil_center[1])
                print(pupil_center[1])
                

                return draw

            
            plt.figure(figsize=(15,4))
            plt.subplot(1,2,1)
            plt.title("Left eye")
            lms_left = model._calculate_landmarks(pred_left)
            result_left = draw_pupil(left_eye_im, inp_left, lms_left)
            plt.imshow(result_left)
            plt.subplot(1,2,2)
            plt.title("Right eye")
            lms_right = model._calculate_landmarks(pred_right)
            result_right = draw_pupil(right_eye_im, inp_right, lms_right)
            plt.imshow(result_right)
            plt.show()
            
            self.pb.value=80
            
            draw2 = input_img.copy()
            dim2=input_img.shape


            a=int(pnt_center[1]*(dim[0]/108)) 
            b=int(pnt_center[0]*(dim[1]/180) + int(im_dim[1]/2))
            c=int(pnt_center[3]*(dim[0]/108)) 
            d=int(pnt_center[2]*(dim[1]/180)) 

            print("left_eye Y")
            print(a)
            print("left_eye X")
            print(b)

            print("right_eye Y")
            print(c)
            print("right_eye X")
            print(d)

            slice_h = slice(int(0), int(im_dim[0]))
            slice_w = slice(int(im_dim[1]/2), int(im_dim[1]))
            im_shape = left_eye_im.shape[::-1]

            draw2[slice_h, slice_w, :] = cv2.resize(result_left, im_shape[1:])

            slice_h = slice(int(0), int(im_dim[0]))
            slice_w = slice(int(0), int(im_dim[1]/2))
            im_shape = right_eye_im.shape[::-1]

            net_dist=math.sqrt((a-c)*(a-c)+(b-d)*(b-d))
            draw2[slice_h, slice_w, :] = cv2.resize(result_right, im_shape[1:])
            plt.imshow(draw2)
            plt.show()

            font = cv2.FONT_HERSHEY_SIMPLEX
            self.pb.value=100
            print("The net Distance between the pupil Centres is :")
            print(net_dist)
        
            measured=int(self.lastName.text)
            max_x_res=int(self.xres.text)
            print(round(net_dist*(measured/max_x_res),2))


            draw3=cv2.line(draw2, (b, a), (d, c), (255, 0, 0), 2)
            dim3=draw2.shape

            # print("input_dim")
            # print(dim2)
            # print("output_dim")
            # print(dim3)
            
            pnt_center=[]
            
            #cv2.putText(draw3,net_dist,(10,500), font, 4,(255,255,255),2,cv2.LINE_AA)
            plt.figure(figsize=(10,10))
            plt.axis('off')
            plt.imshow(draw2)
            plt.show()
            plt.imshow(draw3)
            plt.show()
            
            cv2.waitKey(1000)
            #cv2.destroyAllWindows()
            self.pb.value=0

            
##            data['dist'] = []
##            if cnt_both==0:
##                a=str(round(net_dist*(measured/max_x_res),2))
##                print(a)
##            if cnt_both==1:
##                b=str(round(net_dist*(measured/max_x_res),2))
##            if cnt_both==2:
##                c=str(round(net_dist*(measured/max_x_res),2))
##                data['dist'].append({  
##                '1': a,
##                '2': b,
##                '3': c
##                })
##            with open('data.txt', 'w') as outfile:  
##                json.dump(data, outfile)
            cnt_both+=1
        
        
    def pressedrunright(self, instance):
        name = self.name.text
        dist_both = self.email.text

        print("Name:", name)


        """## Instantiate GazeML ELG model

        #A stacked hourglass framework for iris and eye-lid detection.
        """

        model = KerasELG()
        model.net.load_weights("./elg_weights/elg_keras.h5")

        cnt_one=0
        while cnt_one<3:
            
            if cnt_one==0:
                fnr = "./one/right/right1.jpg"
                right_eye_im = cv2.imread(fnr)[..., ::-1]
                dim_x1=right_eye_im.shape[1]
                dim_y1=right_eye_im.shape[0]
                
                fnl = "./one/right/right2.jpg"
                left_eye_im = cv2.imread(fnl)[..., ::-1]
                dim_x2=left_eye_im.shape[1]
                dim_y2=left_eye_im.shape[0]

                img_name_lf = "./output/right/left.jpg"
                img_name_rt = "./output/right/rt.jpg"

                makeanim(right_eye_im,left_eye_im,'./anim/one/right_lf_rt')
            
            if cnt_one==1:
                fnr = "./one/right/right2.jpg"
                right_eye_im = cv2.imread(fnr)[..., ::-1]
                dim_x1=right_eye_im.shape[1]
                dim_y1=right_eye_im.shape[0]
                
                fnl = "./one/right/rightmid.jpg"
                left_eye_im = cv2.imread(fnl)[..., ::-1]
                dim_x2=left_eye_im.shape[1]
                dim_y2=left_eye_im.shape[0]
                
                img_name_md = "./output/right/mid.jpg"

                makeanim(right_eye_im,left_eye_im,'./anim/one/right_lf_md')
                

                img_name = "./output/right/rightmid2.jpg"
            if cnt_one==2:
                fnr = "./one/right/right1.jpg"
                right_eye_im = cv2.imread(fnr)[..., ::-1]
                dim_x1=right_eye_im.shape[1]
                dim_y1=right_eye_im.shape[0]
                
                fnl = "./one/right/rightmid.jpg"
                left_eye_im = cv2.imread(fnl)[..., ::-1]
                dim_x2=left_eye_im.shape[1]
                dim_y2=left_eye_im.shape[0]
                img_name = "./output/right/rightmid1.jpg"

                makeanim(right_eye_im,left_eye_im,'./anim/one/right_rt_md')
                
            pupil_center_right_cp=right_eye_im.copy()
            pupil_center_left_cp=left_eye_im.copy()

            #########################################################
            width = pupil_center_right_cp.shape[1]
            height = pupil_center_right_cp.shape[0]
            FPS = 1
            seconds = 2

            fourcc = VideoWriter_fourcc(*'MP42')
            video = VideoWriter('./circle_noise.avi', fourcc, float(FPS), (width, height))

            a=0
            for _ in range(FPS*seconds):
                if a%2==0:
                    video.write(pupil_center_left_cp)
                else:
                    video.write(pupil_center_right_cp)
                a+=1
            video.release()
            #########################################################


            plt.subplot(1,2,1)
            plt.title('Input image rt')
            plt.imshow(right_eye_im)
            plt.subplot(1,2,2)
            plt.title('Input image lf')
            plt.imshow(left_eye_im)
            plt.show()
            
            inp_left = cv2.cvtColor(left_eye_im, cv2.COLOR_RGB2GRAY)
            inp_left = cv2.equalizeHist(inp_left)
            inp_left = cv2.resize(inp_left, (180,108))[np.newaxis, ..., np.newaxis]

            inp_right = cv2.cvtColor(right_eye_im, cv2.COLOR_RGB2GRAY)
            inp_right = cv2.equalizeHist(inp_right)
            inp_right = cv2.resize(inp_right, (180,108))[np.newaxis, ..., np.newaxis]

            plt.figure(figsize=(8,3))
            plt.subplot(1,2,1)
            plt.title('Left eye')
            plt.imshow(inp_left[0,...,0], cmap="gray")
            plt.subplot(1,2,2)
            plt.title('Right eye')
            plt.imshow(inp_right[0,...,0], cmap="gray")
            plt.show()
            
            """## Predict eye region landmarks

            ELG forwardpass. Output shape: (36, 60, 18)
            """

            inp_left.shape, inp_right.shape

            input_array = np.concatenate([inp_left, inp_right], axis=0)
            pred_left, pred_right = model.net.predict(input_array/255 * 2 - 1)

            """## Visualize output heatmaps

            Eighteen heatmaps are predicted: 
            - Eight heatmaps for iris (green)
            - Eight heatmaps for eye-lid (red)
            - Two heatmaps for pupil (blue)
            """

            #@title
            plt.figure(figsize=(10,4))
            plt.subplot(1,2,1)
            plt.axis('off')
            plt.title('Left eye heatmaps')
            hm_r = np.max(pred_left[...,:8], axis=-1, keepdims=True)
            hm_g = np.max(pred_left[...,8:16], axis=-1, keepdims=True)
            hm_b = np.max(pred_left[...,16:], axis=-1, keepdims=True)
            plt.imshow(np.concatenate([hm_r, hm_g, hm_b], axis=-1))
            plt.subplot(1,2,2)
            plt.axis('off')
            plt.title('Right eye heatmaps')
            hm_r = np.max(pred_right[...,:8], axis=-1, keepdims=True)
            hm_g = np.max(pred_right[...,8:16], axis=-1, keepdims=True)
            hm_b = np.max(pred_right[...,16:], axis=-1, keepdims=True)
            plt.imshow(np.concatenate([hm_r, hm_g, hm_b], axis=-1))
            plt.show()
            
            """# Draw eye region landmarks"""

            def draw_pupil(im, inp_im, lms):
                draw = im.copy()
                draw = cv2.resize(draw, (inp_im.shape[2], inp_im.shape[1]))
                pupil_center = np.zeros((2,))
                pnts_outerline = []
                pnts_innerline = []
                stroke = inp_im.shape[1] // 12 + 1
                
                for i, lm in enumerate(np.squeeze(lms)):
                    y, x = int(lm[0]*3), int(lm[1]*3)

                    if i < 8:
                        pnts_outerline.append([y, x])
                    elif i < 16:
                        pnts_innerline.append([y, x])
                        pupil_center += (y,x)
                
                pupil_center = (pupil_center/8).astype(np.int32)
                draw = cv2.cv2.circle(draw, (pupil_center[0], pupil_center[1]), 1, (255,255,0), -1)        
                draw = cv2.polylines(draw, [np.array(pnts_outerline).reshape(-1,1,2)], isClosed=True, color=(125,255,125), thickness=stroke//4)
                draw = cv2.polylines(draw, [np.array(pnts_innerline).reshape(-1,1,2)], isClosed=True, color=(125,125,255), thickness=stroke//4)
                return draw, pupil_center

            plt.figure(figsize=(15,4))
            plt.subplot(1,2,1)
            plt.title("Left eye")
            lms_left = model._calculate_landmarks(pred_left)
            result_left, pupil_center_left = draw_pupil(left_eye_im, inp_left, lms_left)
            plt.imshow(result_left)
            #print(pupil_center_left)

            plt.subplot(1,2,2)
            plt.title("Right eye")
            lms_right = model._calculate_landmarks(pred_right)
            result_right, pupil_center_right = draw_pupil(right_eye_im, inp_right, lms_right)
            plt.imshow(result_right)
            #print(pupil_center_right)
            plt.show()

            plt.figure(figsize=(15,4))
            plt.subplot(1,2,1)
            ratio_x1=dim_x2/180
            #print(ratio_x1)
            #print(pupil_center_left[0])
            pupil_center_left[0]=int((pupil_center_left[0])*(ratio_x1))
            ratio_y1=dim_y2/108
            pupil_center_left[1]=int(pupil_center_left[1]*ratio_y1)
            pupil_center_left_cp = cv2.cv2.circle(pupil_center_left_cp, (pupil_center_left[0], pupil_center_left[1]), 10, (255,255,0), -1)
            print(pupil_center_left)
            plt.imshow(pupil_center_left_cp)

            plt.subplot(1,2,2)
            ratio_x2=dim_x1/180
            ratio_y2=dim_y1/108
            pupil_center_right[0]=int(pupil_center_right[0]*ratio_x2)
            pupil_center_right[1]=int(pupil_center_right[1]*ratio_y2)
            pupil_center_right_cp = cv2.cv2.circle(pupil_center_right_cp, (pupil_center_right[0], pupil_center_right[1]), 10, (255,255,0), -1)
            print(pupil_center_right)
            plt.imshow(pupil_center_right_cp)
            
            dist_bet_centre = np.linalg.norm(pupil_center_left - pupil_center_right)
            print(dist_bet_centre)
            print("pixel")
            measured=int(self.lastName.text)
            max_x_res=int(self.xres.text)
            print(round(dist_bet_centre*(measured/max_x_res),2))
            print("in mm")

            if cnt_one==0:
                cv2.imwrite(img_name_lf, pupil_center_left_cp)
                cv2.imwrite(img_name_rt, pupil_center_right_cp)
            if cnt_one==1:
                cv2.imwrite(img_name_md, pupil_center_right_cp)

            pnt_center=[]
            
            #plt.show()

##            if cnt_one==0:
##                a=str(round(dist_bet_centre*(measured/max_x_res),2))
##            elif cnt_one==1:
##                b=str(round(dist_bet_centre*(measured/max_x_res),2))
##            elif cnt_one==2:
##                c=str(round(dist_bet_centre*(measured/max_x_res),2))
##                data['dist'].append({  
##                '1': str(a),
##                '2': str(b),
##                '3': str(c)
##                })

            cnt_one+=1
        

    def pressedrunleft(self, instance):
        name = self.name.text
        dist_both = self.email.text

        print("Name:", name)


        """## Instantiate GazeML ELG model

        #A stacked hourglass framework for iris and eye-lid detection.
        """

        model = KerasELG()
        model.net.load_weights("./elg_weights/elg_keras.h5")

        cnt_one_lf=0
        while cnt_one_lf<3:
            
            if cnt_one_lf==0:
                fnr = "./one/left/left1.jpg"
                right_eye_im = cv2.imread(fnr)[..., ::-1]
                dim_x1=right_eye_im.shape[1]
                dim_y1=right_eye_im.shape[0]
                
                fnl = "./one/left/left2.jpg"
                left_eye_im = cv2.imread(fnl)[..., ::-1]
                dim_x2=left_eye_im.shape[1]
                dim_y2=left_eye_im.shape[0]

                makeanim(right_eye_im , left_eye_im , './anim/one/left_rt_lf' )
            
            if cnt_one_lf==1:
                fnr = "./one/left/left2.jpg"
                right_eye_im = cv2.imread(fnr)[..., ::-1]
                dim_x1=right_eye_im.shape[1]
                dim_y1=right_eye_im.shape[0]
                
                fnl = "./one/left/leftmid.jpg"
                left_eye_im = cv2.imread(fnl)[..., ::-1]
                dim_x2=left_eye_im.shape[1]
                dim_y2=left_eye_im.shape[0]

                makeanim(right_eye_im , left_eye_im , './anim/one/left_lf_md')
            if cnt_one_lf==2:
                fnr = "./one/left/left1.jpg"
                right_eye_im = cv2.imread(fnr)[..., ::-1]
                dim_x1=right_eye_im.shape[1]
                dim_y1=right_eye_im.shape[0]
                
                fnl = "./one/left/leftmid.jpg"
                left_eye_im = cv2.imread(fnl)[..., ::-1]
                dim_x2=left_eye_im.shape[1]
                dim_y2=left_eye_im.shape[0]
                makeanim(right_eye_im , left_eye_im , './anim/one/left_rt_md' )
                
            pupil_center_right_cp=right_eye_im.copy()
            pupil_center_left_cp=left_eye_im.copy()



            plt.subplot(1,2,1)
            plt.title('Input image rt')
            plt.imshow(right_eye_im)
            plt.subplot(1,2,2)
            plt.title('Input image lf')
            plt.imshow(left_eye_im)
            plt.show()
            
            inp_left = cv2.cvtColor(left_eye_im, cv2.COLOR_RGB2GRAY)
            inp_left = cv2.equalizeHist(inp_left)
            inp_left = cv2.resize(inp_left, (180,108))[np.newaxis, ..., np.newaxis]

            inp_right = cv2.cvtColor(right_eye_im, cv2.COLOR_RGB2GRAY)
            inp_right = cv2.equalizeHist(inp_right)
            inp_right = cv2.resize(inp_right, (180,108))[np.newaxis, ..., np.newaxis]

            plt.figure(figsize=(8,3))
            plt.subplot(1,2,1)
            plt.title('Left eye')
            plt.imshow(inp_left[0,...,0], cmap="gray")
            plt.subplot(1,2,2)
            plt.title('Right eye')
            plt.imshow(inp_right[0,...,0], cmap="gray")
            plt.show()

            """## Predict eye region landmarks

            ELG forwardpass. Output shape: (36, 60, 18)
            """

            inp_left.shape, inp_right.shape

            input_array = np.concatenate([inp_left, inp_right], axis=0)
            pred_left, pred_right = model.net.predict(input_array/255 * 2 - 1)

            """## Visualize output heatmaps

            Eighteen heatmaps are predicted: 
            - Eight heatmaps for iris (green)
            - Eight heatmaps for eye-lid (red)
            - Two heatmaps for pupil (blue)
            """

            #@title
            plt.figure(figsize=(10,4))
            plt.subplot(1,2,1)
            plt.axis('off')
            plt.title('Left eye heatmaps')
            hm_r = np.max(pred_left[...,:8], axis=-1, keepdims=True)
            hm_g = np.max(pred_left[...,8:16], axis=-1, keepdims=True)
            hm_b = np.max(pred_left[...,16:], axis=-1, keepdims=True)
            plt.imshow(np.concatenate([hm_r, hm_g, hm_b], axis=-1))
            plt.subplot(1,2,2)
            plt.axis('off')
            plt.title('Right eye heatmaps')
            hm_r = np.max(pred_right[...,:8], axis=-1, keepdims=True)
            hm_g = np.max(pred_right[...,8:16], axis=-1, keepdims=True)
            hm_b = np.max(pred_right[...,16:], axis=-1, keepdims=True)
            plt.imshow(np.concatenate([hm_r, hm_g, hm_b], axis=-1))
            plt.show()

            """# Draw eye region landmarks"""

            def draw_pupil(im, inp_im, lms):
                draw = im.copy()
                draw = cv2.resize(draw, (inp_im.shape[2], inp_im.shape[1]))
                pupil_center = np.zeros((2,))
                pnts_outerline = []
                pnts_innerline = []
                stroke = inp_im.shape[1] // 12 + 1
                
                for i, lm in enumerate(np.squeeze(lms)):
                    y, x = int(lm[0]*3), int(lm[1]*3)

                    if i < 8:
                        pnts_outerline.append([y, x])
                    elif i < 16:
                        pnts_innerline.append([y, x])
                        pupil_center += (y,x)
                
                pupil_center = (pupil_center/8).astype(np.int32)
                draw = cv2.cv2.circle(draw, (pupil_center[0], pupil_center[1]), 1, (255,255,0), -1)        
                draw = cv2.polylines(draw, [np.array(pnts_outerline).reshape(-1,1,2)], isClosed=True, color=(125,255,125), thickness=stroke//4)
                draw = cv2.polylines(draw, [np.array(pnts_innerline).reshape(-1,1,2)], isClosed=True, color=(125,125,255), thickness=stroke//4)
                return draw, pupil_center

            plt.figure(figsize=(15,4))
            plt.subplot(1,2,1)
            plt.title("Left eye")
            lms_left = model._calculate_landmarks(pred_left)
            result_left, pupil_center_left = draw_pupil(left_eye_im, inp_left, lms_left)
            plt.imshow(result_left)
            print(pupil_center_left)

            plt.subplot(1,2,2)
            plt.title("Right eye")
            lms_right = model._calculate_landmarks(pred_right)
            result_right, pupil_center_right = draw_pupil(right_eye_im, inp_right, lms_right)
            plt.imshow(result_right)
            print(pupil_center_right)
            plt.show()

            plt.figure(figsize=(15,4))
            plt.subplot(1,2,1)
            ratio_x1=dim_x2/180
            print(ratio_x1)
            print(pupil_center_left[0])
            pupil_center_left[0]=int((pupil_center_left[0])*(ratio_x1))
            ratio_y1=dim_y2/108
            pupil_center_left[1]=int(pupil_center_left[1]*ratio_y1)
            pupil_center_left_cp = cv2.cv2.circle(pupil_center_left_cp, (pupil_center_left[0], pupil_center_left[1]), 10, (255,255,0), -1)
            print(pupil_center_left)
            plt.imshow(pupil_center_left_cp)

            plt.subplot(1,2,2)
            ratio_x2=dim_x1/180
            ratio_y2=dim_y1/108
            pupil_center_right[0]=int(pupil_center_right[0]*ratio_x2)
            pupil_center_right[1]=int(pupil_center_right[1]*ratio_y2)
            pupil_center_right_cp = cv2.cv2.circle(pupil_center_right_cp, (pupil_center_right[0], pupil_center_right[1]), 10, (255,255,0), -1)
            print(pupil_center_right)
            plt.imshow(pupil_center_right_cp)

            dist_bet_centre = np.linalg.norm(pupil_center_left - pupil_center_right)
            print(dist_bet_centre)
            print("pixel")
            measured=int(self.lastName.text)
            max_x_res=int(self.xres.text)
            print(round(dist_bet_centre*(measured/max_x_res),2))

            pnt_center=[]
            #plt.show()
            
##            if cnt_one_lf==0:
##                a=str(round(dist_bet_centre*(measured/max_x_res),2))
##            elif cnt_one_lf==1:
##                b=str(round(dist_bet_centre*(measured/max_x_res),2))
##            elif cnt_one_lf==2:
##                c=str(round(dist_bet_centre*(measured/max_x_res),2))
##                data['dist'].append({  
##                '1': str(a),
##                '2': str(b),
##                '3': str(b)
##                })

            cnt_one_lf+=1
        
    
    def pressedrtw(self, instance):
        ##specify which camera(button)
        cam = cv2.VideoCapture(0)

        cv2.namedWindow("Camera")

        while True:
            ret, frame = cam.read()
            cv2.imshow("Camera", frame)
            if not ret:
                break

            k = cv2.waitKey(1)

            if k%256 == 27:
                # ESC pressed
                print("Escape hit, closing...")
                break
            elif k%256 == 32:
                # SPACE pressed
                img_name = "./one/right/rightmid.jpg"
                cv2.imwrite(img_name, frame)
                print("written!".format(img_name))
                break
        cam.release()

        cv2.destroyWindow('Camera')
            
    def pressedrtq(self, instance):
        ##specify which camera(button)
        cam = cv2.VideoCapture(0)

        cv2.namedWindow("Camera")

        while True:
            ret, frame = cam.read()
            cv2.imshow("Camera", frame)
            if not ret:
                break

            k = cv2.waitKey(1)

            if k%256 == 27:
                # ESC pressed
                print("Escape hit, closing...")
                break
            elif k%256 == 32:
                # SPACE pressed
                img_name = "./one/right/right1.jpg"
                cv2.imwrite(img_name, frame)
                print("written!".format(img_name))
                break
        cam.release()

        cv2.destroyWindow('Camera')
        
    def pressedrte(self, instance):
        ##specify which camera(button)
        cam = cv2.VideoCapture(0)

        cv2.namedWindow("Camera")

        while True:
            ret, frame = cam.read()
            cv2.imshow("Camera", frame)
            if not ret:
                break

            k = cv2.waitKey(1)

            if k%256 == 27:
                # ESC pressed
                print("Escape hit, closing...")
                break
            elif k%256 == 32:
                # SPACE pressed
                img_name = "./one/right/right2.jpg"
                cv2.imwrite(img_name, frame)
                print("written!".format(img_name))
                break
        cam.release()

        cv2.destroyWindow('Camera')

    def pressedlfw(self, instance):
        ##specify which camera(button)
        cam = cv2.VideoCapture(0)

        cv2.namedWindow("Camera")

        while True:
            ret, frame = cam.read()
            cv2.imshow("Camera", frame)
            if not ret:
                break

            k = cv2.waitKey(1)

            if k%256 == 27:
                # ESC pressed
                print("Escape hit, closing...")
                break
            elif k%256 == 32:
                # SPACE pressed
                img_name = "./one/left/leftmid.jpg"
                cv2.imwrite(img_name, frame)
                print("written!".format(img_name))
                break
        cam.release()

        cv2.destroyWindow('Camera')

    def pressedlfq(self, instance):
            ##specify which camera(button)
            cam = cv2.VideoCapture(0)

            cv2.namedWindow("Camera")

            while True:
                ret, frame = cam.read()
                cv2.imshow("Camera", frame)
                if not ret:
                    break

                k = cv2.waitKey(1)

                if k%256 == 27:
                    # ESC pressed
                    print("Escape hit, closing...")
                    break
                elif k%256 == 32:
                    # SPACE pressed
                    img_name = "./one/left/left1.jpg"
                    cv2.imwrite(img_name, frame)
                    print("written!")
                    break
                
            cam.release()

            cv2.destroyWindow('Camera')

    def pressedlfe(self, instance):
            ##specify which camera(button)
            cam = cv2.VideoCapture(0)

            cv2.namedWindow("Camera")

            while True:
                ret, frame = cam.read()
                cv2.imshow("Camera", frame)
                if not ret:
                    break

                k = cv2.waitKey(1)

                if k%256 == 27:
                    # ESC pressed
                    print("Escape hit, closing...")
                    break
                elif k%256 == 32:
                    # SPACE pressed
                    img_name = "./one/left/left2.jpg"
                    cv2.imwrite(img_name, frame)
                    print("written!")
                    break
                
            cam.release()

            cv2.destroyWindow('Camera')

    def pressedbmd(self, instance):
        ##specify which camera(button)
        cam = cv2.VideoCapture(0)

        cv2.namedWindow("Camera")

        while True:
            ret, frame = cam.read()
            cv2.imshow("Camera", frame)
            if not ret:
                break

            k = cv2.waitKey(1)

            if k%256 == 27:
                # ESC pressed
                print("Escape hit, closing...")
                break
            elif k%256 == 32:
                # SPACE pressed
                img_name = "./both/bmd.jpg"
                cv2.imwrite(img_name, frame)
                print("written!".format(img_name))
                break
        cam.release()

        cv2.destroyWindow('Camera')
        
    def pressedbrt(self, instance):
        ##specify which camera(button)
        cam = cv2.VideoCapture(0)

        cv2.namedWindow("Camera")

        while True:
            ret, frame = cam.read()
            cv2.imshow("Camera", frame)
            if not ret:
                break

            k = cv2.waitKey(1)

            if k%256 == 27:
                # ESC pressed
                print("Escape hit, closing...")
                break
            elif k%256 == 32:
                # SPACE pressed
                img_name = "./both/brt.jpg"
                cv2.imwrite(img_name, frame)
                print("written!".format(img_name))
                break
        cam.release()

        cv2.destroyWindow('Camera')

    def pressedblf(self, instance):
        ##specify which camera(button)
        cam = cv2.VideoCapture(0)

        cv2.namedWindow("Camera")

        while True:
            ret, frame = cam.read()
            cv2.imshow("Camera", frame)
            if not ret:
                break

            k = cv2.waitKey(1)

            if k%256 == 27:
                # ESC pressed
                print("Escape hit, closing...")
                break
            elif k%256 == 32:
                # SPACE pressed
                img_name = "./both/blf.jpg"
                cv2.imwrite(img_name, frame)
                print("written!".format(img_name))
                break
        cam.release()

        cv2.destroyWindow('Camera')
    ##################################################################################
        """Progress Bar VAlue set"""
    def trigger(self, number):
        """ Start the list of tasks """
        # The tasklist can be any list of functions. The only requirement is
        # that each accepts 1 parameter - callback to call when done
        task_list = [TaskSupplier.do_task for num in range(0, number)]
        ProgressAnimator(self.pb, task_list)