zoukankan      html  css  js  c++  java
  • 自瞄

    自瞄框框可新开个线程,然后启动这个即可,有点耗内存,录像不知为啥显示不出来。

    def draw():
        global data
        while True:
            for i in range(xlen):
                    win32gui.SetPixel(dc, x+i, y, 255)
                    win32gui.SetPixel(dc, x+i, y+ylen, 255)
            for i in range(ylen):
                win32gui.SetPixel(dc, x, y+i, 255)
                win32gui.SetPixel(dc, x+xlen, y+i, 255)
            for man in data:
                _x = int(x+man[0].item())
                _y = int(y+man[1].item())
                _xlen = int((man[2].item()-man[0].item())/2)
                _ylen = int((man[3].item()-man[1].item())/2)
                _x = int(_x+_xlen/2)
                _y = int(_y+_ylen/2)
                for i in range(_xlen):
                    win32gui.SetPixel(dc, _x+i, _y, 255)
                    win32gui.SetPixel(dc, _x+i, _y+_ylen, 255)
                for i in range(_ylen):
                    win32gui.SetPixel(dc, _x, _y+i, 255)
                    win32gui.SetPixel(dc, _x+_xlen, _y+i, 255)
    

    自瞄代码

    import torch
    import pyautogui
    import win32gui
    import sys
    import threading
    import time
    from pynput import keyboard
    dc = win32gui.GetDC(0)
    x=300 #起点x位置
    y=274 #起点y位置
    xlen = 424#边框长度
    ylen = 268
    star_x =x + int(xlen/2)#准星位置
    star_y= y + int(ylen/2)
    data = torch.Tensor([])
    device = torch.device('cuda')
    model = torch.hub.load('ultralytics/yolov5', 'yolov5s')
    model.classes=[0]
    def shot():
        a = time.time()
        img = pyautogui.screenshot(region=[x,y,xlen,ylen])
        results = model(img)
        data = (results.xyxy[0]).clone().type(torch.int)
        if len(data) !=0:
            item_x = 0
            item_y = 0
            min = sys.maxsize 
            for man in data:
                _x = x+man[0].item()
                _y = y+man[1].item()
                _xlen = man[2].item()-man[0].item()
                _ylen = man[3].item()-man[1].item()
                _x = _x+_xlen/2
                _y = _y+_ylen/4
                if ((_x-star_x)*(_x-star_x) + (_y-star_y)*(_y-star_y))<min:
                    min = (_x-star_x)*(_x-star_x) + (_y-star_y)*(_y-star_y)
                    item_x =_x
                    item_y=_y
            threading.Thread(target=click,args=(item_x ,item_y)).start()
        b = time.time()
        print("检测消耗时间:{0}s".format(b-a))
    def on_press(key):
        try:
            if(key.char == 't'):
                print('alphanumeric key {0} pressed:开始检测'.format(
                key.char))
                shot()
        except AttributeError:
            key
    def on_release(key):
        if key == keyboard.Key.esc:
            return False
    def click(_x,_y):
        print('在X:{},Y:{},方向发现敌人!锁定并射击!'.format(_x,_y))
        pyautogui.moveTo(_x ,_y)
        pyautogui.click()
    with keyboard.Listener(
        on_press=on_press,
        on_release=on_release) as listener:
        listener.join()
    listener = keyboard.Listener(
        on_press=on_press,
        on_release=on_release)
    listener.start()
    
    
    笔者:洪湛 所写博客均为原创。如果有需要转载的地方请注明出处。谢谢合作。
  • 相关阅读:
    VS2005中乱码问题
    android TextView多行文本(超过3行)使用ellipsize属性无效问题的解决方法
    android中的ellipsize设置(省略号的问题)
    手机web——自适应网页设计(html/css控制)
    Android横屏竖屏切换的问题
    android webview js alert对话框 不能弹出 解决办法
    WebView点击加载的页面中的按钮时不弹出新窗口以及在加载后执行javascript
    MVC学习笔记---MVC需要用的那些知识点
    CLR via C#学习笔记---类型
    C#学习笔记---协变和逆变
  • 原文地址:https://www.cnblogs.com/godoforange/p/15345664.html
Copyright © 2011-2022 走看看