Ejemplo n.º 1
0
class CameoDepth(Cameo):
    
    def __init__(self):
        self._windowManager = WindowManager('Cameo',
                                             self.onKeypress)
        self._captureManager = CaptureManager(
            cv2.VideoCapture(0), self._windowManager, True)
        self._faceTracker = FaceTracker()
        self._shouldDrawDebugRects = False
        self._curveFilter = filters.BGRPortraCurveFilter()
    
    def run(self):
        """Run the main loop."""
        self._windowManager.createWindow()
        while self._windowManager.isWindowCreated:
            self._captureManager.enterFrame()
            frame = self._captureManager.frame
            
            self._faceTracker.update(frame)
            faces = self._faceTracker.faces
            rects.swapRects(frame, frame,
                            [face.faceRect for face in faces])
            
            filters.strokeEdges(frame, frame)
            self._curveFilter.apply(frame, frame)
            
            if self._shouldDrawDebugRects:
                self._faceTracker.drawDebugRects(frame)
            
            self._captureManager.exitFrame()
            self._windowManager.processEvents()
Ejemplo n.º 2
0
Archivo: cameo.py Proyecto: sarvex/pycv
class Cameo(object):
    
    def __init__(self):
        self._windowManager = WindowManager('Cameo',
                                             self.onKeypress)
        self._captureManager = CaptureManager(
            cv2.VideoCapture(0), self._windowManager, True)
        self._faceTracker = FaceTracker()
        self._shouldDrawDebugRects = False
        self._curveFilter = filters.BGRPortraCurveFilter()
    
    def run(self):
        """Run the main loop."""
        self._windowManager.createWindow()
        while self._windowManager.isWindowCreated:
            self._captureManager.enterFrame()
            frame = self._captureManager.frame
            
            if frame is not None:
                
                self._faceTracker.update(frame)
                faces = self._faceTracker.faces
                rects.swapRects(frame, frame,
                                [face.faceRect for face in faces])
            
                filters.strokeEdges(frame, frame)
                self._curveFilter.apply(frame, frame)
                
                if self._shouldDrawDebugRects:
                    self._faceTracker.drawDebugRects(frame)
            
            self._captureManager.exitFrame()
            self._windowManager.processEvents()
    
    def onKeypress(self, keycode):
        """Handle a keypress.
        
        space  -> Take a screenshot.
        tab    -> Start/stop recording a screencast.
        x      -> Start/stop drawing debug rectangles around faces.
        escape -> Quit.
        
        """
        if keycode == 32: # space
            self._captureManager.writeImage('screenshot.png')
        elif keycode == 9: # tab
            if not self._captureManager.isWritingVideo:
                self._captureManager.startWritingVideo(
                    'screencast.avi')
            else:
                self._captureManager.stopWritingVideo()
        elif keycode == 120: # x
            self._shouldDrawDebugRects = \
                not self._shouldDrawDebugRects
        elif keycode == 27: # escape
            self._windowManager.destroyWindow()
Ejemplo n.º 3
0
class Cameo(object):

    def __init__(self):
        self._window_manager = WindowManager('Cameo', self.on_key_press)
        self._capture_manager = CaptureManager(cv2.VideoCapture(0), self._window_manager, True)
        self._face_tracker = FaceTracker()
        self._should_draw_debug_rects = False
        self._curve_filter = filters.EmbossFilter()  # can use any of applied filters

    def run(self):
        self._window_manager.create_window()
        while self._window_manager.is_window_created:

            self._capture_manager.enter_frame()
            frame = self._capture_manager.frame

            self._face_tracker.update(frame)
            faces = self._face_tracker.faces
            rects.swap_rects(frame, frame, [face.face_rect for face in faces])

            filters.stroke_edges(frame, frame)
            self._curve_filter.apply(frame, frame)

            if self._should_draw_debug_rects:
                self._face_tracker.draw_debug_rects(frame)

            self._capture_manager.exit_frame()
            self._window_manager.process_events()

    def on_key_press(self, keycode):

        """
        Keypress handler

        space - screen
        tab - start/stop recording
        x - start/stop debug
        escape - quit
        :return:
        """

        if keycode == 32:  # space
            self._capture_manager.write_image('screenshot.png')
        elif keycode == 9:  # tab
            if not self._capture_manager.is_writing_video:
                self._capture_manager.start_writing_video('screencast.avi')
            else:
                self._capture_manager.stop_writing_video()
        elif keycode == 120:  # x
            self._should_draw_debug_rects = not self._should_draw_debug_rects
        elif keycode == 27:  # escape
            self._window_manager.destroy_window()
Ejemplo n.º 4
0
 def __init__(self):
     self._window_manager = TkinterWindowManager('Jarvis',
                                                 self.on_key_press)
     self._capture_manager = CaptureManager(
         cv2.VideoCapture(0),
         should_mirror_capture=True,
         preview_manager=self._window_manager,
         should_mirror_preview=False)
     self._threaded_web_stream_manager = ThreadedWebStreamManager(
         self._capture_manager)
     self._face_tracker = FaceTracker()
     self._should_draw_debug = False
     self._curve_filter = filters.BGRPortraCurveFilter()
Ejemplo n.º 5
0
	def __init__(self):
		self._windowManager = WindowManager('Cameo', self.onKeypress)
		self._captureManager = CaptureManager(cv2.VideoCapture(0),
			self._windowManager, True)
		self._faceTracker = FaceTracker()
		self._shouldDrawDebugRects = False
		self._curveFilter = filters.BGRPortraCurveFilter()
Ejemplo n.º 6
0
class CameoDepth(Cameo):
    
    def __init__(self):
        self._windowManager = WindowManager('Cameo',
                                             self.onKeypress)
        device = depth.CV_CAP_OPENNI # uncomment for Microsoft Kinect
        #device = depth.CV_CAP_OPENNI_ASUS # uncomment for Asus Xtion
        self._captureManager = CaptureManager(
            cv2.VideoCapture(device), self._windowManager, True)
        self._faceTracker = FaceTracker()
        self._shouldDrawDebugRects = False
        self._curveFilter = filters.BGRPortraCurveFilter()
    
    def run(self):
        """Run the main loop."""
        self._windowManager.createWindow()
        while self._windowManager.isWindowCreated:
            self._captureManager.enterFrame()
            self._captureManager.channel = \
                depth.CV_CAP_OPENNI_DISPARITY_MAP
            disparityMap = self._captureManager.frame
            self._captureManager.channel = \
                depth.CV_CAP_OPENNI_VALID_DEPTH_MASK
            validDepthMask = self._captureManager.frame
            self._captureManager.channel = \
                depth.CV_CAP_OPENNI_BGR_IMAGE
            frame = self._captureManager.frame
            
            self._faceTracker.update(frame)
            faces = self._faceTracker.faces
            masks = [
                depth.createMedianMask(
                    disparityMap, validDepthMask, face.faceRect) \
                for face in faces
            ]
            rects.swapRects(frame, frame,
                            [face.faceRect for face in faces], masks)
            
            filters.strokeEdges(frame, frame)
            self._curveFilter.apply(frame, frame)
            
            if self._shouldDrawDebugRects:
                self._faceTracker.drawDebugRects(frame)
            
            self._captureManager.exitFrame()
            self._windowManager.processEvents()
Ejemplo n.º 7
0
 def __init__(self):
     self._windowManager = WindowManager('Cameo',self.onKeypress)
     device = depth.CV_CAP_OPENNI # uncomment for Microsoft Kinect
     #device = depth.CV_CAP_OPENNI_ASUS # uncomment for Asus Xtion
     self._captureManager = CaptureManager(cv2.VideoCapture(device), self._windowManager, True)
     self._faceTracker = FaceTracker()
     self._shouldDrawDebugRects = False
     self._curveFilter = filters.BGRPortraCurveFilter()
Ejemplo n.º 8
0
 def __init__(self):
     '''
     Constructor
     
     '''
     self._windowManager = WindowManager('Cameo', self.onKeypress)
     self._captureManager = CaptureManager(cv2.VideoCapture(0), self._windowManager, True)
     
     self._faceTracker = FaceTracker() 
     self._shouldDrawDebugRects = False
     
     self._curveFilter = filters.BGRCrossProcessCurveFilter()
Ejemplo n.º 9
0
class Cameo(object):

    def __init__(self):
        self._windowManager = WindowManager('Cameo', self.onKeypress)
        self._captureManager = CaptureManager(cv2.VideoCapture(0),
                    self._windowManager, True)
        self._curveFilter = filters.BGRProviaCurveFilter()
        self._faceTracker = FaceTracker()
        self._shouldDrawDebugRects = False

    def run(self):
        """ Run the main loop """

        self._windowManager.createWindow()
        print("Window '{}' Created".format(self._windowManager.windowName))
        print("\n{}\n{}\n{}\n{}".format("Controls:",
                "space   --> Take a screenshot",
                "tab     --> Start/stop recording a screencast",
                "escape  --> Quit"))

        while self._windowManager.isWindowCreated:
            self._captureManager.enterFrame()
            frame = self._captureManager.frame

            self._faceTracker.update(frame)
            faces = self._faceTracker.faces
            rects.swapRects(frame, frame, [face.faceRect for face in faces])

            # Add filtering to the frame
            filters.strokeEdges(frame,frame)
            self._curveFilter.apply(frame,frame)

            if self._shouldDrawDebugRects:
                self._faceTracker.drawDebugRects(frame)

            self._captureManager.exitFrame()
            self._windowManager.processEvents()

    def stop(self):
        print("[CAMEO] closing all processes")
        self._captureManager._capture.release()
        self._windowManager.destroyWindow()


    def onKeypress(self, keycode):

        """ Handle a keypress

        space   --> Take a screenshot
        tab     --> Start/stop recording a screencast
        x       --> Toggle drawing debug rectangles around faces
        escape  --> Quit
        """

        if keycode == 32: # Space
            self._captureManager.writeImage('screenshot.png');
            print("Writing image to file....")
        elif keycode == 9: # Tab
            if not self._captureManager.isWritingVideo:
                self._captureManager.startWritingVideo('screencast.avi')
                print("Writing video to file...")
            else:
                self._captureManager.stopWritingVideo()
                print("Stopped writing video")
        elif keycode == 120: # x
            self._shouldDrawDebugRects = not self._shouldDrawDebugRects
            print("Toggled drawing rectangles")
        elif keycode == 27: # escape
            print("Closing Window...")
            self._windowManager.destroyWindow()
Ejemplo n.º 10
0
class Browser(object):
    
    def __init__(self,video_source):  
        self._windowManager = WindowManager('Browser', self.onKeypress)
        self._captureManager = CaptureManager(video_source, self._windowManager, True)
        self._faceTracker = FaceTracker()
        self._shouldDrawDebugRects = False
        self._curveFilter = filters.BGRPortraCurveFilter()
    
    def run(self):
        """Run the main loop."""
        self._windowManager.createWindow()
        while self._windowManager.isWindowCreated:
            self._captureManager.enterFrame()
            frame = self._captureManager.frame
            
            if frame is not None:
                print "got frame" 
                self._faceTracker.update(frame)
                faces = self._faceTracker.faces
                rects.swapRects(frame, frame,
                                [face.faceRect for face in faces])
            
                #filters.strokeEdges(frame, frame)
                #self._curveFilter.apply(frame, frame)
                
                if self._shouldDrawDebugRects:
                    self._faceTracker.drawDebugRects(frame)
            else:
                print "got None frame"
                print "press any key to exit."
                cv2.waitKey(0)
                break
            self._captureManager.exitFrame()
            waitkey_time=1
            if self._captureManager._video_source!=0:   
                waitkey_time=500
            self._windowManager.processEvents(waitkey_time)
    
    def onKeypress(self, keycode):
        """Handle a keypress.
        
        space  -> Take a screenshot.
        tab    -> Start/stop recording a screencast.
        x      -> Start/stop drawing debug rectangles around faces.
        escape -> Quit.
        
        """
        if keycode == 32: # space
            self._captureManager.writeImage('screenshot.png')
        elif keycode == 9: # tab
            if not self._captureManager.isWritingVideo:
                self._captureManager.startWritingVideo(
                    '/Users/xcbfreedom/Documents/screencast.avi')
            else:
                self._captureManager.stopWritingVideo()
        elif keycode == 120: # x
            self._shouldDrawDebugRects = \
                not self._shouldDrawDebugRects
        elif keycode == 27: # escape
            self._windowManager.destroyWindow()
Ejemplo n.º 11
0
class Facedetect(object):
    
    def __init__(self):
        self._windowManager = WindowManager('Facedetect', self.onKeypress)
        self._captureManager = CaptureManager(cv2.VideoCapture(camera_nr), self._windowManager, True)
        self._faceTracker = FaceTracker()
        self._shouldDrawDebugRects = True
        self._curveFilter = filters.BGRPortraCurveFilter()

    def run(self):
        """Run the main loop."""
        self._windowManager.createWindow()
        while self._windowManager.isWindowCreated:
            self._captureManager.enterFrame()
            frame = self._captureManager.frame
            
            if frame is not None:
                
                t = cv2.getTickCount()
                self._faceTracker.update(frame)
                faces = self._faceTracker.faces
                t = cv2.getTickCount() - t
                print("time taken for detection = %gms" % (t/(cv2.getTickFrequency())*1000.))
                
                # uncomment this line for swapping faces
                #rects.swapRects(frame, frame, [face.faceRect for face in faces])
                
                #filters.strokeEdges(frame, frame)
                #self._curveFilter.apply(frame, frame)
                
                if self._shouldDrawDebugRects:
                    self._faceTracker.drawDebugRects(frame)
                    self._faceTracker.drawLinesFromCenter(frame)
                
            self._captureManager.exitFrame()
            self._windowManager.processEvents()
    
    def onKeypress(self, keycode):
        """Handle a keypress.
        
        space  -> Take a screenshot.
        tab    -> Start/stop recording a screencast.
        x      -> Start/stop drawing debug rectangles around faces.
        escape -> Quit.
        
        """
        if keycode == 32: # space
            self._captureManager.writeImage('screenshot.png')
        elif keycode == 9: # tab
            if not self._captureManager.isWritingVideo:
                self._captureManager.startWritingVideo(
                    'screencast.avi')
            else:
                self._captureManager.stopWritingVideo()
        elif keycode == 120: # x
            self._shouldDrawDebugRects = \
                not self._shouldDrawDebugRects
        elif keycode == 27: # escape
            self._windowManager.destroyWindow()
            # When everything is done, release the capture
            self._captureManager.release()
Ejemplo n.º 12
0
  cv2.imshow('Addition',dst)
  cv2.imshow('Final',img_background)
  
  cv2.waitKey(0)
  cv2.destroyAllWindows()
  

if __name__=="__main__":
  arr = os.listdir('faces/')
  path = 'faces/'
  
  for img_path in arr:
  
    img = cv2.imread(path + img_path)
    
    _faceTracker = FaceTracker()
    _faceTracker.update(img)
    faces = _faceTracker.faces
    
    _faceTracker.drawDebugRects(img)
    
    cv2.imshow('Faces', img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
  



#overlays 
"""sunglasses_img = cv2.imread('overlays/blackhat.png')
mask_sungla = create_mask(cv2.imread('overlays/blackhat.png', -1))
Ejemplo n.º 13
0
 def __init__(self):
     self._window_manager = WindowManager('Cameo', self.on_key_press)
     self._capture_manager = CaptureManager(cv2.VideoCapture(0), self._window_manager, True)
     self._face_tracker = FaceTracker()
     self._should_draw_debug_rects = False
     self._curve_filter = filters.EmbossFilter()  # can use any of applied filters
Ejemplo n.º 14
0
# -*- coding: utf-8 -*-
"""
Created on Sun Jun 19 17:33:35 2016

test FaceDetectation

@author: pip
"""

import cv2
import logging
from cameraIO import IOSteam
import sys


from trackers import FaceTracker

front=IOSteam()
tracker=FaceTracker()

front.run()
tracker.update( front.frame)
facelist=tracker.faces
front.stop()
print(facelist)

Ejemplo n.º 15
0
class JarvisVision(object):
    def __init__(self):
        self._window_manager = TkinterWindowManager('Jarvis',
                                                    self.on_key_press)
        self._capture_manager = CaptureManager(
            cv2.VideoCapture(0),
            should_mirror_capture=True,
            preview_manager=self._window_manager,
            should_mirror_preview=False)
        self._threaded_web_stream_manager = ThreadedWebStreamManager(
            self._capture_manager)
        self._face_tracker = FaceTracker()
        self._should_draw_debug = False
        self._curve_filter = filters.BGRPortraCurveFilter()

    def run(self):
        """Run the main loop."""
        try:
            self._window_manager.create_window()
            self._threaded_web_stream_manager.start()
            while self._window_manager.is_window_created:
                self._capture_manager.enter_frame()
                frame = self._capture_manager.frame

                if frame is not None:
                    self._face_tracker.update(frame)
                    faces = self._face_tracker.faces

                    #rects.swap_rects(frame, frame,
                    #[face.face_rect for face in faces])
                    #filters.stroke_edges(frame, frame)
                    #self._curve_filter.apply(frame, frame)

                    if self._should_draw_debug:
                        self._face_tracker.draw_debug_text(frame)
                        self._face_tracker.draw_debug_rects(frame)

                    self._capture_manager.processed_frame = frame

                self._capture_manager.exit_frame()
                self._window_manager.process_events()
        finally:
            self._threaded_web_stream_manager.stop()
            self._threaded_web_stream_manager.join()

    def screenshot(self):
        self._capture_manager.write_image('screenshot.png')

    def toggle_record_video(self):
        if not self._capture_manager.is_writing_video:
            self._capture_manager.start_writing_video('screencast.avi')
        else:
            self._capture_manager.stop_writing_video()

    def toggle_show_detection(self):
        self._should_draw_debug = not self._should_draw_debug

    def on_key_press(self, keycode):
        """Handle a key press.

        space  -> Take a screenshot.
        tab    -> Start/stop recording a screencast.
        x      -> Start/stop drawing debug data.
        escape -> Quit.
        """
        if keycode == 32:  # space
            self.screenshot()
        elif keycode == 9:  # tab
            self.toggle_record_video()
        elif keycode == 120:  # x
            self.toggle_show_detection()
        elif keycode == 27:  # escape
            self._window_manager.destroy_window()
Ejemplo n.º 16
0
import cv2
from trackers import FaceTracker

faceTracker = FaceTracker()

vc = cv2.VideoCapture(0)

if vc.isOpened():
    rval, frame = vc.read()
else:
    rval = False

if rval:
    image = frame
    cv2.imwrite('prev.png', image)
    #image = cv2.imread('Pic.jpg')
    faceTracker.update(image)
    faceTracker.drawDebugRects(image)
    cv2.imwrite('Faces.png', image)
else:
    print('Shit...')
Ejemplo n.º 17
0
 def __init__(self,video_source):  
     self._windowManager = WindowManager('Browser', self.onKeypress)
     self._captureManager = CaptureManager(video_source, self._windowManager, True)
     self._faceTracker = FaceTracker()
     self._shouldDrawDebugRects = False
     self._curveFilter = filters.BGRPortraCurveFilter()