You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

71 lines
2.7 KiB

import pyautogui
import time
from tkinter import *
import cv2
import sendinput
from calculate_model import Capture_Point
from region_detection import Region_Detector
def show_capture(win_name,roi_image):
cv2.namedWindow(win_name, cv2.WINDOW_NORMAL)
cv2.resizeWindow(win_name, 640, 360)
cv2.imshow(win_name, roi_image)
cv2.moveWindow(win_name, 0,0)
cv2.getWindowImageRect(win_name)
def main():
user_interface = Tk() # 界面开头
user_interface.title("辅助瞄准")
user_interface.geometry("480x640")
user_interface.resizable(0, 0)
Label(user_interface, text='以下是你打开的窗口,请选择要使用的窗口', font=(None, 15), fg='#66CCFF', bg="black").pack()
ht=Region_Detector.getButtonInfo()
for wnd in ht.items():
if wnd[1]!= "":
Button(user_interface, text=wnd[1], width=50, height=1, command=lambda wnd=wnd:runhelper(wnd[1]), activeforeground="red", activebackground="black").pack()
mainloop() # 界面结尾
def runhelper(wn):
win_name = wn
print("现在捕获的窗口是:" ,end="")
print(win_name)
win_size = [1920, 1080] #窗口大小
win_index = [0,0] #窗口放置位置
win_more = 0 #窗口多余部分,即窗口标题
RD = Region_Detector(win_name, win_more) #创建窗口处理对象
hwdn = RD.getWindowHandle() #获取窗口句柄
RD.setWindows(hwdn, win_size, win_index) #设置窗口参数
while True:
MouseX, MouseY = pyautogui.position()
start_time = time.time() #开始时间
img, Screen = RD.getWindowsRGB(hwdn) #获取窗口截图
img_roi, Screen_c,[x0,y0,x1,y1] = RD.getRegion(img, Screen) #获取窗口截图ROI图片
roi_image,my_result = Capture_Point(img_roi, confidence=0.9) #ROI图像进行推理返回图像与ROI图像中位置坐标
print("捕获结果:", my_result)
fps = int(1/(time.time() - start_time)) # 计算推理帧率
print("处理帧数:{}".format(fps))
show_capture(win_name, roi_image) # OpenCV窗口显示结果图像
if cv2.waitKey(1) & 0xFF == ord("q"):#退出快捷键
break
if my_result == {}:
continue
x= int(my_result["1"][0])
y = int(my_result["1"][1])
currentMouseX = (640+x-MouseX)*1.1
currentMouseY = (360+y-MouseY)*1.1
sendinput.Mouse.move(int(currentMouseX),int(currentMouseY))
time.sleep(0.001)
sendinput.Mouse.leftClick()
sendinput.Mouse.leftClick()
sendinput.Mouse.leftClick()
sendinput.Mouse.leftClick()
cv2.destroyAllWindows()