class Source: def __init__(self, main_window, database, admin): self.main_window = main_window self.dbs = database.session self.admin = admin self.setup_list = [] self.setup_frames = None self.analysis_frames = None self.background = None self.polygon = None self.base_name = None self.media = None self.video = None self.out = None self.location = None self.path = None self.analysis = None self.analysis_dict = None def open_files(self): self.setup_files() def open_camera(self): self.setup = Setup(self) self.setup.base_name = self.base_name self.setup.camera() def open(self, media): self.media = media if media == 'file': print("Source is a file") self.setup_list = [] self.files = QtGui.QFileDialog.getOpenFileNames(\ self.main_window, 'Open video file', '', \ 'Videos (*.avi *.mp4)') if self.files: self.open_files() if media == 'camera': print("Source is a camera") self.window = SourceWindow(self, self.main_window) def not_exist(self, source_path): s = self.dbs result = s.query(Video).filter(Video.path == source_path) print("result count :", result.count()) if result.count() == 0: return True elif result.count() == 1: print("Source exist", result.first()) else: print("Multiple source exist!") return False def generate_setup_list(self): for file in self.files: if self.not_exist(file): self.setup_list.append(file) print("Setup list :", self.setup_list) def setup_files(self): self.generate_setup_list() self.setup = Setup(self) if len(self.setup_list) > 0: self.setup.status = True self.setup.sequencer() else: print("Nothing to setup proceed to analysis") self.analysis = Analysis(self, self.setup) def setup_get_next_frame(self): ret, read_frame = self.setup_frames.read() if ret: self.setup_current_frame = read_frame else: self.setup_current_frame = None def analysis_get_next_frame(self): ret, read_frame = self.analysis_frames.read() if ret: self.analysis_current_frame = read_frame # save video if source is camera if self.media == 'camera': frame = copy(read_frame) def save_frame(): self.out.write(frame) thread = Thread(target=save_frame) thread.start() else: self.analysis_current_frame = None