rendered paste bodyfrom processing import video_stream_processorimport multiprocessing, loggingimport cvdef processFrame(imageProcessor, frameNum, frame): print frameNum (image, features) = imageProcessor.processImage(frame) return (object, (frameNum, features))class VideoProcessor(object): ''' Processes video stream and retrieves frame descriptors ''' videoStreamProcessor = None features = {} def __init__(self, filename): ''' Constructor ''' # Initialize video stream processor first self.videoStreamProcessor = video_stream_processor.VideoStreamProcessor(filename) def getVideoFeatures(self, imageProcessor): logger = multiprocessing.log_to_stderr() logger.setLevel(multiprocessing.SUBDEBUG) pool = multiprocessing.Pool() frame_counter = 0 # Process video while True: frame = self.videoStreamProcessor.get_frame() if frame == None: break # Process frame in another thread pool.apply_async(processFrame, (imageProcessor, frame_counter, frame), callback=self.storeResult) frame_counter = frame_counter + 1 if frame_counter % 100 == 0: print frame_counter # Wait for the processing to stop pool.close() pool.join() print "Feature length ", len(self.features) return self.features def storeResult(self, result): self.features[result[0]] = result[1]