예제 #1
0
class MotionDetector:

    pre_video = None
    post_video = None

    def __init__(self, video_path):
        self.pre_video = VideoHandler(video_path)
        # TODO cambiar el constructor del videohandler
        self.post_video = VideoHandler()

    def launchCPU(self):
        frames_PIL = [
            Image.fromstring("RGB", self.pre_video.getSize(), i.tostring())
            for i in self.pre_video.getAllFrames()
        ]
        for i in xrange(1, len(frames_PIL)):
            # Diferencia
            diferencia = DifferenceFilter(frames_PIL[i], frames_PIL[i + 1])
            diferencia.Apply(Filter.CPU)
            tmp = diferencia.fetchResult()

            # Threshold
            threshold = ThresholdFilter(tmp, level=20)
            threshold.Apply(Filter.CPU)
            tmp2 = threshold.fetchResult()

            # Erosion
            erosion = ErosionFilter(tmp2)
            erosion.Apply(Filter.CPU)
            post = erosion.fetchResult()

            # TODO Mergeado en una clase aparte
            r, g, b = frames_PIL[i + 1].split()
            tmp = ImageChops.add(r, post)
            merged = Image.merge("RGB", (tmp, g, b))

            self.post_video.appendFrame(merged)
            print "#",

        # Terminado, salvamos resultado
        self.post_video.Save("./out.mpg")

    def launchCUDA(self):
        pass
예제 #2
0
class MotionDetector:
   
    pre_video = None
    post_video = None

    def __init__(self, video_path):
        self.pre_video = VideoHandler(video_path)
        # TODO cambiar el constructor del videohandler
        self.post_video = VideoHandler()

    def launchCPU(self):
        frames_PIL = [Image.fromstring("RGB", self.pre_video.getSize(), i.tostring()) for i in self.pre_video.getAllFrames()]
        for i in xrange(1, len(frames_PIL)):
            # Diferencia
            diferencia = DifferenceFilter(frames_PIL[i], frames_PIL[i + 1])
            diferencia.Apply(Filter.CPU)
            tmp = diferencia.fetchResult()

            # Threshold
            threshold = ThresholdFilter(tmp, level=20)
            threshold.Apply(Filter.CPU)
            tmp2 = threshold.fetchResult()

            # Erosion
            erosion = ErosionFilter(tmp2)
            erosion.Apply(Filter.CPU)
            post = erosion.fetchResult()

            # TODO Mergeado en una clase aparte
            r, g, b = frames_PIL[i + 1].split()
            tmp = ImageChops.add(r, post)
            merged = Image.merge("RGB", (tmp, g, b))

            self.post_video.appendFrame(merged)
            print "#",

        # Terminado, salvamos resultado
        self.post_video.Save("./out.mpg")
    
    def launchCUDA(self):
        pass
예제 #3
0
from videoHandler import VideoHandler
import sys
import cv2

videoHandler = VideoHandler()
print(sys.argv[1])

try:
    videoHandler.start(sys.argv[1])
except (Exception, cv2.error) as e:
    raise e
except KeyboardInterrupt:
    videoHandler.parar()


예제 #4
0
 def __init__(self, video_path):
     self.pre_video = VideoHandler(video_path)
     # TODO cambiar el constructor del videohandler
     self.post_video = VideoHandler()
예제 #5
0
 def __init__(self, video_path):
     self.pre_video = VideoHandler(video_path)
     # TODO cambiar el constructor del videohandler
     self.post_video = VideoHandler()