import threading import cv2 as cv import numpy as np from window_capture import WindowCapture from vision import Vision from config_file import UserConfigs class FlappyPosDiscovery(threading.Thread): def __init__(self): threading.Thread.__init__(self) self.config = UserConfigs() self.capture_window = WindowCapture(None, None, self.config) self.vision_stun = Vision() self.needle_f = cv.imread("flappy/flappy.jpg") self.mask_f = cv.imread("flappy/flappy-mask.png") self.needle_g = cv.imread("flappy/gate.png") self.mask_g = cv.imread("flappy/gate-mask.png") self.run_mode = 'run' self.current_pet_height = 0 self.next_gate_height = 0 self.start() def run(self): while self.run_mode == 'run': self.position_detection() print("pet_pos: ", self.current_pet_height) print("next gate: ", self.next_gate_height) def get_actual_pet_height(self): return self.current_pet_height def get_next_gate_height(self): return self.next_gate_height def callback(self): pass def destroy(self): self.destroy() def get_run_mode(self): return self.run_mode def position_detection(self): screenshot = self.capture_window.get_screenshot() #screenshot = screenshot[580:845, 1148:1412] rectangles_g = self.vision_stun.find(screenshot, self.needle_g, 0.9, 5, True, self.mask_g) rectangles_f = self.vision_stun.find(screenshot, self.needle_f, 0.9, 1, True, self.mask_f) if len(rectangles_g) == 0 or len(rectangles_f) == 0: return None self.current_pet_height = rectangles_f[1] + rectangles_f[3] self.next_gate_height = rectangles_g[1] + rectangles_g[3] # return pet height and next gate height