Untitled
unknown
plain_text
2 years ago
1.5 kB
6
Indexable
import cv2 import numpy as np import pygetwindow as gw import pyautogui def process_frame(frame, lower_color, upper_color): hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) mask = cv2.inRange(hsv, lower_color, uppercolor) contours, = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) max_contour = None max_area = 0 for contour in contours: area = cv2.contourArea(contour) if area > max_area and area < frame.shape[0] * frame.shape[1] / 4: max_area = area max_contour = contour return max_contour def main(): lower_color = np.array([100, 100, 100]) upper_color = np.array([110, 110, 110]) window_title = 'replace_this' window = gw.getWindowsWithTitle(window_title)[0] while True: screenshot = pyautogui.screenshot(region=(window.left, window.top, window.width, window.height)) frame = np.array(screenshot) target_contour = process_frame(frame, lower_color, upper_color) if target_contour is not None and pyautogui.mouseDown(button='right'): M = cv2.moments(target_contour) cX = int(M["m10"] / M["m00"]) cY = int(M["m01"] / M["m00"]) target_x = window.left + cX target_y = window.top + cY pyautogui.moveTo(target_x, target_y) if not pyautogui.mouseDown(button='right'): continue if __name__ == "__main__": main()
Editor is loading...