Beispiel #1
0
    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]
Beispiel #2
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]
Beispiel #3
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
Beispiel #4
0
    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()
Beispiel #5
0
    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]
Beispiel #6
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]
Beispiel #7
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,
            })
Beispiel #8
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]

        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]),
            })