63 lines
1.8 KiB
Python
63 lines
1.8 KiB
Python
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
|
|
|
|
|