def auto_offset(self, frame): # 画面のオフセットを自動検出して image を返す filter = OffsetFilter(self) filter.enable() # filter が必要とするので... self.out_width = 1280 self.out_height = 720 best_match = (frame, 0.0, 0, 0) offset_list = [0, -5, -4, -3, -2, -1, 1, 2, 3, 4, 5] for ox in offset_list: for oy in offset_list: filter.offset = (ox, oy) img = filter.execute(frame) score = self.mask_gears_msg.match_score(img) if not score[0]: continue if best_match[1] < score[1]: best_match = (img, score[1], ox, oy) if best_match[2] != 0 or best_match[3] != 0: IkaUtils.dprint('%s: Offset detected. (%d, %d)' % (self, best_match[2], best_match[3])) return best_match[0]
def auto_offset(self, context): # 画面のオフセットを自動検出して image を返す filter = OffsetFilter(self) filter.enable() # filter が必要とするので... self.out_width = 1280 self.out_height = 720 best_match = (context['engine']['frame'], 0.0, 0, 0) offset_list = [0, -5, -4, -3, -2, -1, 1, 2, 3, 4, 5] for ox in offset_list: for oy in offset_list: filter.offset = (ox, oy) img = filter.execute(context['engine']['frame']) IkaUtils.matchWithMask( context['engine']['frame'], self.winlose_gray, 0.997, 0.22) score = self.mask_win.match_score(img) if not score[0]: continue if best_match[1] < score[1]: best_match = (img, score[1], ox, oy) if best_match[2] != 0 or best_match[3] != 0: IkaUtils.dprint('%s: Offset detected. (%d, %d)' % (self, best_match[2], best_match[3])) return best_match[0]
def auto_offset(self, frame): if self.offset and self.offset != (0,0): # result_detailで検出したオフセットを適用する self.out_width = 1280 self.out_height = 720 filter = OffsetFilter(self) filter.enable() filter.offset = self.offset return filter.execute(frame) return frame
def __init__(self): self.output_geometry = (720, 1280) self.effective_lines = 720 self.lock = threading.Lock() self.is_realtime = True self.reset() self.reset_tick() self._offset_filter = OffsetFilter(self) self.set_frame_rate() self._initialize_driver_func()
def auto_offset(self, context): # 画面のオフセットを自動検出して image を返す filter = OffsetFilter(self) filter.enable() # filter が必要とするので... self.out_width = 1280 self.out_height = 720 best_match = (context['engine']['frame'], 0.0, 0, 0) offset_list = [0, -5, -4, -3, -2, -1, 1, 2, 3, 4, 5] for ox in offset_list: for oy in offset_list: filter.offset = (ox, oy) img = filter.execute(context['engine']['frame']) IkaUtils.matchWithMask(context['engine']['frame'], self.winlose_gray, 0.997, 0.22) score = self.mask_win.match_score(img) if not score[0]: continue if best_match[1] < score[1]: best_match = (img, score[1], ox, oy) if best_match[2] != 0 or best_match[3] != 0: IkaUtils.dprint('%s: Offset detected. (%d, %d)' % (self, best_match[2], best_match[3])) return best_match[0]
def adjust_method_offset(self, context, l): # Detect slide offset filter = OffsetFilter(self) filter.enable() # filter が必要とするので... self.out_width = 1280 self.out_height = 720 best_match = (context['engine']['frame'], 0.0, 0, 0) offset_list = [0, -5, -4, -3, -2, -1, 1, 2, 3, 4, 5] for ox in offset_list: for oy in offset_list: filter.offset = (ox, oy) img = filter.execute(context['engine']['frame']) score = self.evaluate_image_accuracy(img) if best_match[1] < score: best_match = (img, score, ox, oy) if 0: l.append({ 'frame': img, 'score': score, 'desc': 'Offset (%s, %s)' % (ox, oy), }) if best_match[2] != 0 or best_match[3] != 0: l.append({ 'frame': best_match[0], 'score': score, 'desc': 'Offset (%s, %s)' % (best_match[2], best_match[3]), 'acceptable': True, })
def adjust_method_offset(self, context, l): # Detect slide offset filter = OffsetFilter(self) filter.enable() # filter が必要とするので... self.out_width = 1280 self.out_height = 720 best_match = (context['engine']['frame'], 0.0, 0, 0) offset_list = [0, -5, -4, -3, -2, -1, 1, 2, 3, 4, 5] gray_frame = cv2.cvtColor(context['engine']['frame'], cv2.COLOR_BGR2GRAY) for ox in offset_list: for oy in offset_list: filter.offset = (ox, oy) img = filter.execute(gray_frame) score = self.evaluate_image_accuracy(img) if best_match[1] < score: best_match = (img, score, ox, oy) if 0: l.append({ 'frame': img, 'score': score, 'desc': 'Offset (%s, %s)' % (ox, oy), 'offset': (ax, ay) }) if best_match[2] != 0 or best_match[3] != 0: filter.offset = (best_match[2], best_match[3]) new_frame = filter.execute(context['engine']['frame']) l.append({ 'frame': new_frame, 'score': score, 'desc': 'Offset (%s, %s)' % (best_match[2], best_match[3]), 'acceptable': True, 'offset': (best_match[2], best_match[3]), })