def get_codec(format):
    if (format == 'avi' or '.avi'):
        codec = cv.CV_FOURCC('D', 'I', 'V', 'X')
    elif (format == 'ogg' or '.ogv' or 'ogg' or '.ogg'):
        codec = cv.CV_FOURCC('t', 'h', 'e', 'o')

    return codec
    def __init__(self, threshold=70,  showWindows=True):

        self.writer = None
        self.font = None

        self.show = showWindows  # Either or not show the 2 windows
        self.frame = None

        self.capture = cv.CaptureFromCAM(0)
        self.frame = cv.QueryFrame(self.capture)  # Take a frame to init recorder

        self.frame=self.frame[1:100,540:640]
        self.frame1gray = cv.CreateMat(self.frame.height, self.frame.width, cv.CV_8U)  # Gray frame at t-1
        cv.CvtColor(self.frame, self.frame1gray, cv.CV_RGB2GRAY)

        # Will hold the thresholded result
        self.res = cv.CreateMat(self.frame.height, self.frame.width, cv.CV_8U)

        self.frame2gray = cv.CreateMat(self.frame.height, self.frame.width, cv.CV_8U)  # Gray frame at t

        self.width = self.frame.width
        self.height = self.frame.height
        self.nb_pixels = self.width * self.height
        self.threshold = threshold

        self.trigger_time = 0  # Hold timestamp of the last detection



        codec = cv.CV_FOURCC('M', 'J', 'P', 'G')  # ('W', 'M', 'V', '2')
        self.writer = cv.CreateVideoWriter(datetime.now().strftime("%b-%d_%H_%M_%S") + ".wmv", codec, 5,
                                           cv.GetSize(self.frame), 1)
        # FPS set to 5 because it seems to be the fps of my cam but should be ajusted to your needs
        self.font = cv.InitFont(cv.CV_FONT_HERSHEY_SIMPLEX, 1, 1, 0, 2, 8)  # Creates a font
コード例 #3
0
ファイル: makeVideo.py プロジェクト: yaukwankiu/cwb
def makeVideo(imageList,
              outputPath=defaultOutputFolder + str(int(time.time())) + '.avi',
              fourcc=cv.CV_FOURCC('F', 'L', 'V', '1'),
              fps=defaultFps,
              frameSize=defaultFrameSize):
    #print imageList
    # create a video writer
    # c.f. http://opencv.willowgarage.com/documentation/python/reading_and_writing_images_and_video.html
    #fourcc=cv.FOURCC('P','I','M','1'), doesn't work?
    #writer = cv.CreateVideoWriter(filename=outputFolder+inputDate+'_'+inputType+'.avi',
    #                                fourcc=cv.FOURCC('F', 'L', 'V', '1'),
    #                                fps=1, frame_size=(600,600), is_color=1)
    #and write your frames in a loop if you want
    # the above don't work.  replace by the following.
    # http://stackoverflow.com/questions/12290023/opencv-2-4-in-python-video-processing/12333066#12333066
    time0 = time.time()
    writer = cv2.VideoWriter(filename=outputPath,
                             fourcc=fourcc,
                             fps=fps,
                             frameSize=frameSize)
    for frame in imageList:
        #print frame
        #cv.ShowImage(str(frame), frame)
        #cv.WaitKey()
        #cv.WriteFrame(writer, frame) #old writer replaced
        writer.write(frame)
コード例 #4
0
ファイル: makeVideo.py プロジェクト: yaukwankiu/cwb
def main(inputDate=defaultDate,
         inputType=defaultType,
         inputFolder="",
         outputFolder=defaultOutputFolder,
         extensions=['.png', '.jpg'],
         fps='',
         frameSize=defaultFrameSize):
    """
    USE: 
        main(inputDate=defaultDate, inputType=DefaultType, inputFolder="", outputFolder="")
    WHERE:
        defaultDate = '2013-07-12'
        defaultType = 'charts'
    OUTPUT:
        out

    """
    time0 = time.time()
    if inputFolder == "":
        inputFolder = "%s%s/%s/" % (dataRoot, inputType, inputDate)

    #print inputFolder
    imageList = loadImages(inputFolder=inputFolder, extensions=extensions)
    if fps == '':
        fps = len(imageList) / 10.  # frames per sec = len(imageList)/10.
        #    - so that each day lasts 10 seconds
        #        no matter how many frames there are
    makeVideo(imageList=imageList,
              outputPath=outputFolder + inputDate + '_' + inputType + '.avi',
              fourcc=cv.CV_FOURCC('F', 'L', 'V', '1'),
              fps=fps,
              frameSize=frameSize)
    print outputFolder + inputDate + '_' + inputType
    print time.time() - time0
コード例 #5
0
ファイル: aviwritercv.py プロジェクト: rborgese/SportsReview
    def processGroup(self, framegroup):
        '''
        Writes frames from specified stream of framegroup to an AVI file using OpenCV
        
        @param framegroup: the incoming framegroup object
        '''

        if framegroup is not None:
            ext = "avi"
            codec = "DIVX"
            # calculate details
            fps = int(
                round(
                    len(framegroup) /
                    (framegroup[-1].timestamp - framegroup[0].timestamp)))
            f0 = framegroup[0][self._stream].asQImage()
            fsize = (f0.width(), f0.height())
            filename = framegroup.filename
            if filename is None:
                filename = "%s%svideo_%s" % (
                    self._recorddirectory,
                    os.path.sep,
                    time.strftime("%Y-%m-%d_%H-%M-%S"),
                )
            filename += ".%s" % ext

            # open writer
            writer = cv2.VideoWriter(filename, cv.CV_FOURCC(*codec), fps,
                                     fsize)

            # write frame files
            for frameset in framegroup:
                frame = self._QImageToCv(frameset[self._stream].asQImage())
                writer.write(frame)
コード例 #6
0
 def initRecorder(self): #Create the recorder
     codec = cv.CV_FOURCC('M', 'J', 'P', 'G') #('W', 'M', 'V', '2')
     now = datetime.now().strftime("%b-%d_%H%M%S")
     print now + ".wmv"
     self.writer=cv.CreateVideoWriter( now +".wmv", codec, 5, cv.GetSize(self.frame), 1)
     #FPS set to 5 because it seems to be the fps of my cam but should be ajusted to your needs
     self.font = cv.InitFont(cv.CV_FONT_HERSHEY_SIMPLEX, 1, 1, 0, 2, 8) #Creates a font
コード例 #7
0
ファイル: grabber.py プロジェクト: Steadroy/infographics-1
    def initGrab(self):

        image = ImageGrab.grab(self.geometry)
        cv_im = cv.CreateImageHeader(image.size, cv.IPL_DEPTH_8U, 3)

        cv.SetData(cv_im, image.tostring())
        cv.CvtColor(cv_im, cv_im, cv.CV_RGB2BGR)

        fourcc = cv.CV_FOURCC('D','I','V','X')
        fps = 25
        width, height = cv.GetSize(cv_im)
        #print width, height
        self.writer = cv.CreateVideoWriter('out3.avi', fourcc, fps, (int(width), int(height)), 1)

        cv.WriteFrame(self.writer, cv_im)

        self.frames_count = 1

        timer = QtCore.QTimer()
        time_interval = 1000 / 25
        timer.setInterval(time_interval)
        timer.timeout.connect(self.grabFrame)
        timer.start()
        self.timer = timer

        self.stopTimer = QtCore.QTimer()
        self.stopTimer.setInterval(self.total_time)
        self.stopTimer.timeout.connect(self.stopCapture)
        self.stopTimer.setSingleShot(True)
        self.stopTimer.start()
コード例 #8
0
ファイル: grabber.py プロジェクト: Steadroy/infographics-1
    def initGrabQt(self):

        image_qt = QtGui.QPixmap.grabWidget(self.view).toImage()
        image_qt_size = (image_qt.size().width(), image_qt.size().height())

        cv_im_4chan = cv.CreateImageHeader(image_qt_size, cv.IPL_DEPTH_8U, 4)
        cv_im = cv.CreateImage(image_qt_size, cv.IPL_DEPTH_8U, 3)
        cv.SetData(cv_im_4chan, image_qt.bits().asstring(image_qt.numBytes()))
        cv.CvtColor(cv_im_4chan, cv_im, cv.CV_RGBA2RGB)

        fourcc = cv.CV_FOURCC('D','I','V','X')
        fps = 25
        width, height = cv.GetSize(cv_im)
        self.writer = cv.CreateVideoWriter('out3.avi', fourcc, fps, (int(width), int(height)), 1)

        cv.WriteFrame(self.writer, cv_im)

        timer = QtCore.QTimer()
        time_interval = 1000 / 25
        timer.setInterval(time_interval)
        timer.timeout.connect(self.grabFrameQt)
        timer.start()
        self.timer = timer

        self.stopTimer = QtCore.QTimer()
        self.stopTimer.setInterval(self.total_time)
        self.stopTimer.timeout.connect(self.stopCapture)
        self.stopTimer.setSingleShot(True)
        self.stopTimer.start()
コード例 #9
0
def save_video(video, fps, save_filename='media/output.avi'):
    """Save a video to disk"""
    fourcc = cv.CV_FOURCC('M', 'J', 'P', 'G')
    writer = cv2.VideoWriter(save_filename, fourcc, fps,
                             (video.shape[2], video.shape[1]), 1)
    for x in range(0, video.shape[0]):
        res = cv2.convertScaleAbs(video[x])
        writer.write(res)
コード例 #10
0
 def initRecorder(self):  #Create the recorder
     codec = cv.CV_FOURCC('D', 'I', 'V', 'X')  #('W', 'M', 'V', '2')
     self.writer = cv.CreateVideoWriter(
         datetime.now().strftime("%b-%d_%H_%M_%S") + ".avi", codec, 20,
         cv.GetSize(self.frame), 1)
     #FPS set to 20 because it seems to be the fps of my cam but should be ajusted to your needs
     self.font = cv.InitFont(cv.CV_FONT_HERSHEY_SIMPLEX, 1, 1, 0, 2,
                             8)  #Creates a font
コード例 #11
0
 def __init__(self, srcFilePath, destFilePath, bgStart, nBackgroundFrames,
              cropParams, scaleParams):
     RecordedVideoStream.__init__(self, srcFilePath, bgStart,
                                  nBackgroundFrames)
     self.cropParams = np.array(cropParams)
     self.scaleParams = np.array(scaleParams)
     size = self.getFinalSize()
     self.videoWriter = cv2.VideoWriter(destFilePath, cv.CV_FOURCC(*'mp4v'),
                                        self.fps, size[::-1], True)
コード例 #12
0
 def writeVideo(self):
     height,width=cv2.imread("Frames/1.jpg").shape[:2]
     out = cv2.VideoWriter("changedOutput.ogv",cv.CV_FOURCC('t','h','e','0'), 25.0, (width,height))
     folder=self.sort_files()
         
     for i in folder:
         pic="Frames/"+str(i)+".jpg"
         img=cv2.imread(pic) 
         out.write(img)
     out.release()
コード例 #13
0
ファイル: camera2.py プロジェクト: inu1255/rasp-camera
 def begin(self, image):
     now = time.time()
     if not self.mp4:
         # 'M', 'J', 'P', 'G'
         self.mp4 = cv2.VideoWriter("tmp.avi",
                                    cv.CV_FOURCC('M', 'J', 'P', 'G'),
                                    self.fps, self.size, 1)
         self.begin_record_at = now
     self.record(image, now)
     self.last_record_at = now
コード例 #14
0
 def initRecorder(self):  # Create the recorder
     codec = cv.CV_FOURCC('M', 'J', 'P', 'G')
     self.writer = cv.CreateVideoWriter(
         datetime.now().strftime("%Y%m%d_%H%M%S") + ".wmv", codec, 8,
         cv.GetSize(self.frame), 1)
     # FPS set to 30 because it seems to be the fps of my cam but should be ajusted to your needs
     self.countdownFont = cv.InitFont(cv.CV_FONT_HERSHEY_SIMPLEX, 3, 3, 0,
                                      5, 8)  # Creates a font
     self.timeFont = cv.InitFont(cv.CV_FONT_HERSHEY_SIMPLEX, 1, 1, 0, 2,
                                 8)  # Creates a font
コード例 #15
0
ファイル: VideoLogger.py プロジェクト: pi19404/robosub-1
 def _init_writer(self):
     #dest = self.DIR + strftime('%yy_%mm_%dd_%Hh_%Mm_%Ss_') + key + '.avi'
     dest = '{dir}{timestamp}{name}.avi'.format(
         dir=self.DIR,
         timestamp=strftime('%yy_%mm_%dd_%Hh_%Mm_%Ss_'),
         name=self._settings['name'])
     self._writer = cv2.VideoWriter()
     self._writer.open(filename=dest,
                       fourcc=cv.CV_FOURCC(*list('MJPG')),
                       fps=5,
                       frameSize=(640, 480))
コード例 #16
0
    def __init__(self, fp):
        """
		Initialize with filepath to .avi file you want to alter.
		"""
        self._fps = 23.92
        self._capture_size = (1920, 1080)
        self._fourcc = cv.CV_FOURCC('m', 'p', '4', 'v')
        self._directory = os.path.split(fp)[0]
        self._file_name = os.path.splitext(os.path.split(fp)[1])[0]
        self._file_ext = os.path.splitext(os.path.split(fp)[1])[1]
        self._capture = video.create_capture(fp)
コード例 #17
0
    def writeOutputFile(self, output):
        self.height, self.width = cv2.imread("Frames/1.jpg").shape[:2]
        out = cv2.VideoWriter(output, cv.CV_FOURCC('a', 'v', 'c', '1'), 30.0,
                              (self.width, self.height))
        folder = self.sort_files()

        for i in folder:
            pic = "Frames/" + str(i) + ".jpg"
            img = cv2.imread(pic)
            out.write(img)
        out.release()
コード例 #18
0
ファイル: testbackup.py プロジェクト: jchan1992/thesis
def recordkinect1():
 # record depth
    code = cv.CV_FOURCC('m','p','4','v')
    depth = cv2.VideoWriter()
    success = depth.open('depth.mp4',code,10,(640,480),True)
    old_time = time.time()
    while time.time() - old_time < 30:
        dep = get_depth1()
        image = cv2.cvtColor(dep,cv2.COLOR_GRAY2BGR)
        depth.write(image)
        cv2.waitKey(10)
    depth.release()
コード例 #19
0
    def writeOutputFile(self):
        self.height, self.width = cv2.imread(
            "/Users/pratikramdasi/Desktop/frames/0 (1).jpg").shape[:2]
        out = cv2.VideoWriter("/Users/pratikramdasi/Desktop/vtest.mp4",
                              cv.CV_FOURCC('a', 'v', 'c', '1'), 30.0,
                              (self.width, self.height))
        folder = self.sort_files()

        for i in folder:
            pic = "/Users/pratikramdasi/Desktop/frames/0 (" + str(i) + ").jpg"
            img = cv2.imread(pic)
            out.write(img)
        out.release()
コード例 #20
0
ファイル: testbackup.py プロジェクト: jchan1992/thesis
def recordkinect2():
    # record vid and depth side by side
    code = cv.CV_FOURCC('m','p','4','v')
    dual = cv2.VideoWriter()
    success = dual.open('dual.mp4',code,10,(1280,480),True)
    old_time = time.time()
    while(time.time()-old_time<60):
        dep = get_depth1()
        vid = get_video1()
        depth = cv2.cvtColor(dep,cv2.COLOR_GRAY2BGR)
        output = np.zeros((480, 640*2, 3), dtype="uint8")
        output[0:480,0:640] = vid
        output[0:480,640:1280] = depth
        # cv2.imshow('lol',output)
        dual.write(output)
    dual.release()
コード例 #21
0
ファイル: testbackup.py プロジェクト: jchan1992/thesis
def recordkinect():
    # record video
    code = cv.CV_FOURCC('m','p','4','v')
    # depth = cv2.VideoWriter()
    vid = cv2.VideoWriter()
    # success = depth.open('depth.mp4',code,10,(640,480),False)
    success2 = vid.open('video.mp4',code,10,(640,480),True)
    old_time = time.time()
    while time.time()-old_time < 30:
        print(old_time)
        vid.write(get_video1())
        # depth.write(get_depth1())
        cv2.waitKey(10)
        print(time.time())
    # depth.release()
    vid.release()
コード例 #22
0
    def __init__(self,
                 fName,
                 size=None,
                 fps=25,
                 isColor=True,
                 fourcc=cv.CV_FOURCC(*'MJPG')):  #('X','V', 'I', 'D')):

        self.fileName = fName
        self.width = -1
        self.height = -1
        self.frames = 0
        self.fps = fps
        self.aviHandler = None
        self.fourcc = fourcc
        self.isColor = isColor
        self.size = size
コード例 #23
0
 def _startVideoCaptureSession(self, filePath): # TODO: refactor name
     """
     Initiates a cv2.VideoCapture object to supply the frames to read
     and a cv2.VideoWriter object to save a potential output
     
     :param str filePath: the source file path
     
     :return: capture and videoWriter object
     :rtype: (cv2.VideoCapture, cv2.VideoWriter)
     """
     capture = cv2.VideoCapture(filePath)
     dirname, filename = os.path.split(filePath)
     basename, ext = os.path.splitext(filename)
     savePath = os.path.join(dirname, 'recording.avi') # Fixme: should use argument
     videoWriter = cv2.VideoWriter(savePath, cv.CV_FOURCC(*'mp4v'), 15, self.size, True)
     if not(videoWriter.isOpened()):
         raise VideoStreamIOException("Can't start video writer codec {} probably unsupported".format(CODEC))
     return capture, videoWriter
コード例 #24
0
def combine_pyramid_and_save(g_video,
                             orig_video,
                             enlarge_multiple,
                             fps,
                             save_filename='media/output.avi'):
    """Combine a gaussian video representation with the original and save to file"""
    width, height = get_frame_dimensions(orig_video[0])
    fourcc = cv.CV_FOURCC('M', 'J', 'P', 'G')
    writer = cv2.VideoWriter(save_filename, fourcc, fps, (width, height), 1)
    for x in range(0, g_video.shape[0]):
        img = numpy.ndarray(shape=g_video[x].shape, dtype='float')
        img[:] = g_video[x]
        for i in range(enlarge_multiple):
            img = cv2.pyrUp(img)

        img[:height, :width] = img[:height, :width] + orig_video[x]
        res = cv2.convertScaleAbs(img[:height, :width])
        writer.write(res)
コード例 #25
0
ファイル: makeVideo.py プロジェクト: yaukwankiu/cwb
def makeVideoAll(inputType=defaultType,
                 inputFolder="",
                 extensions=['.png', '.jpg'],
                 outputFolder="",
                 fourcc=cv.CV_FOURCC('F', 'L', 'V', '1'),
                 fps=defaultFps,
                 frameSize=defaultFrameSize):
    """
    cd /media/KINGSTON/ARMOR/python/
    python
    from armor.video import makeVideo as mv
    reload(mv) ; mv.makeVideoAll(inputType="charts2")
    """
    time0 = time.time()
    if inputFolder == "":
        inputFolder = "%s%s/" % (dataRoot, inputType)
    if outputFolder == "":
        outputFolder = defaultOutputFolder + inputType + '_' + str(
            int(time.time())) + '/'
    #debug
    print inputFolder
    os.makedirs(outputFolder)
    LL = os.listdir(inputFolder)
    LL.sort()
    for folder in LL:
        imageList = loadImages(inputFolder=inputFolder + folder + '/',
                               extensions=extensions)
        try:
            print folder
            makeVideo(
                imageList,
                outputPath=outputFolder + folder + '_' + inputType + '.avi',
                fourcc=fourcc,
                fps=len(imageList),
                #fps = len(imageList)/10.  ,
                frameSize=frameSize)  # frames per sec = len(imageList)/10.
            #    - so that each day lasts  10 seconds
            #        no matter how many frames there are

        except:
            print folder, "makeVideo ERROR!!!!!!!!!!!"  # don't care if it doesn't work
            time.sleep(3)
    print time.time() - time0
コード例 #26
0
def RecordVideoFromCamera():
    cap = cv2.VideoCapture(0)
    f,I = cap.read() 
    
    print I.shape
    H,W,Z=I.shape
    writer = cv2.VideoWriter('Pattern.avi', cv.CV_FOURCC('D','I','V','X'), 10.0, (W,H), True)
    cv2.namedWindow("input")
    
    while(f):
        f,I = cap.read()
        if f==True:
    
            writer.write(I)
            cv2.imshow("input", array(I))
            ch = cv2.waitKey(1)
            if ch == 32 or ch == 27:#  Break by SPACE key
                break
    writer.release()
コード例 #27
0
    def initRecorder(self):  #Create the recorder
        codec = cv.CV_FOURCC('M', 'J', 'P', 'G')
        self.writer = cv.CreateVideoWriter(
            datetime.now().strftime("/home/pi/python_programs/camera_output/" +
                                    "%b-%d_%H_%M_%S") + ".wmv", codec, 5,
            cv.GetSize(self.frame), 1)
        #FPS set to 5 because it seems to be the fps of my cam but should be ajusted to your needs
        self.font = cv.InitFont(cv.CV_FONT_HERSHEY_SIMPLEX, 1, 1, 0, 2,
                                8)  #Creates a font

        # Comments:
        """ By changing threshold in def __init__(..,self.threshold = 15,...) you control sensitivity of image capture"""
        """e.g threshold = 15 is more sensitive in threshold = 25"""
        # end

        self.captureCounter += 1
        img = cv.QueryFrame(self.capture)
        filename = "capture" + str(self.captureCounter)
        file = "/home/pi/python_programs/camera_output/" + filename + ".png"
        cv.SaveImage(file, img)
コード例 #28
0
ファイル: testbackup.py プロジェクト: jchan1992/thesis
def recordwebcam():
    cap = cv2.VideoCapture(0)
    code = cv.CV_FOURCC('m','p','4','v')
    out = cv2.VideoWriter()
    succes = out.open('output.mp4',code, 10, (1280,720),True)
    while(cap.isOpened()):
        ret, frame = cap.read()
        if ret==True:
            frame = cv2.flip(frame,180)
            # write the flipped frame
            out.write(frame)
            cv2.imshow('frame',frame)
            if cv2.waitKey(1) & 0xFF == ord('q'):
                break
        else:
            break

    # Release everything if job is finished
    cap.release()
    out.release()
    cv2.destroyAllWindows()
コード例 #29
0
    def applyTransform(self):
        self.framing(self.path)
        self.height, self.width = cv2.imread("Frames/1.jpg").shape[:2]

        # write transformed video

        out = cv2.VideoWriter("changedOutput.mp4",
                              cv.CV_FOURCC('a', 'v', 'c', '1'), 30.0,
                              (self.width, self.height))
        folder = self.sort_files()

        # write Transformed video frames

        for i in folder:
            pic = "Frames/" + str(i) + ".jpg"
            Newpic = cv2.imread(pic, 0)
            frame = cv2.Canny(Newpic, 100, 200)
            cv2.imwrite(pic, frame)
            Newpic = cv2.imread(pic)
            img = cv2.flip(Newpic, 0)
            out.write(img)
        out.release()
コード例 #30
0
def normalize_video_lenght(i_name, o_name, fps, length, verbose=False):
    capture = cv.CaptureFromFile(i_name)
    width = int(cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_WIDTH))
    height = int(cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_HEIGHT))
    original_fps = cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_FPS)
    original_frames_number = cv.GetCaptureProperty(capture,
                                                   cv.CV_CAP_PROP_FRAME_COUNT)
    final_frames_number = int(fps * length)

    if verbose:
        print '\ninput video: ', i_name
        print 'size: %s:%s' % (width, height), ' fps:', original_fps, 'frames:', \
                original_frames_number, 'estimated length:', float(original_frames_number)/original_fps

        print '\noutput video: ', o_name
        print 'size: %s:%s' % (width, height), ' fps:', fps, 'frames:', \
                final_frames_number, 'estimated length:', float(final_frames_number)/fps, '\n'

    my_fourcc = cv.CV_FOURCC('m', 'p', 'g', '2')
    writer = cv.CreateVideoWriter(o_name, my_fourcc, fps, (width, height))

    diff = final_frames_number - original_frames_number
    step = operation = None
    if diff > 0:
        step = int(original_frames_number / diff)
        operation = expand_video
    elif diff < 0:
        step = int(final_frames_number / abs(diff))
        operation = reduce_video

    if step == 0:
        print 'The desired final length is too short'
        return 1

    result = operation(capture, writer, final_frames_number, step, verbose)
    if verbose:
        print 'A total of', result, 'frames were removed/duplicated from the original video.'
        return 0