python Opencv和pyautogui实现自动识图点击

python Opencv和pyautogui实现自动识图点击

1.导入python及其他模块
匹配类是上一章博客内容,pyautogui自带的图片匹配效果不是很理想。就使用Opencv的图片匹配来实现图片的定位。

python 使用模版匹配.

import pyautogui as pag
import time
import datetime
import socket
import 匹配类 as IMA
import threading

2主程序

if __name__=="__main__":
    # DoWhile()
    print(datetime.datetime.now()) 
    print(dir(IMA.ImageMatch))
    print("---------------------------------------")
    print(dir(threading))
    DoWhile()
    # shotSCreen()
    print(datetime.datetime.now()) 
    pass

3.shotSCreen()#截取当前屏幕,X,Y=ImageMatch()#通过匹配获取当前模版图片的定位
实现自动点击

#实现定位点击
def DoWhile():
    
    num=0
    num_false=0
    
    while (num<20 and num_false<100):
        lcation={"X1":2000,"Y1":2000}
        # lcation=pag.locateOnScreen(r'D:\mypython\chengjiao\T1.png')
        shotSCreen()#截取当前屏幕
        X,Y=ImageMatch()#通过匹配获取当前模版图片的定位
        if(X!=0):
            point=pag.Point(X,Y)
            print(lcation)
            if lcation!=None:
                num+=1
                # point=pag.center(lcation)
                print("定位成功%d"%(num))
                print(point)
                pag.click(point)
                time.sleep(2)
            else:
                num_false+=1
                print("定位失败%d"%(num_false))
        else:
            num_false+=1
            print("定位失败%d"%(num_false))

4.自动截取当前图片

def shotSCreen():
    image_dir = r'D:\mypython\chengjiao'
    curr_time='2'
    print(curr_time)
    image_file=f"{image_dir}\{curr_time}.jpg"
    print(socket.gethostname(),"save_image:",image_file)
    pag.screenshot(image_file)
    time.sleep(1)

5.使用模版匹配来获取当前坐标

def ImageMatch():
    X=0
    src=r'D:\mypython\chengjiao\2.jpg'
    srctempl=r'D:\mypython\chengjiao\T1.jpg'
    imageMatch= IMA.ImageMatch(src,srctempl)
    X,Y=IMA.ImageMatch.main(imageMatch)
    print(X,Y)
    return(X,Y)```

6.运行效果图:
点击前
点击后

python-opencv模版匹配学习

  • 8
    点赞
  • 91
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
完整的函数:CreateImageButton HWND Options Margins 0 有三个需要输入的参数 第一个是按钮的句柄值 必填 第二个是个数组 必填 第三个是按钮的边界宽度 可填值 0 1 2 3 4 值越高边框越宽 不填的话默认为0 ;这是一个简单事例: ;创建一个普通的按钮 对比用: Gui Add Button w200 Button 0 ; 再创造出实验的按钮: { hwndHBT1 貌似是取得该按键的句柄 hwnd是固定的 就像 g v 值存在变量HBT1里} Gui Add Button w200 hwndHBT1 Button 1 ; 编写出函数的第二个参数: BT1Options : [{BC: "A00000|FF00FF" TC: "White" 3D: 0 G: 1}] ;这个代表普通状态下 按钮的样式 BT1Options[2] : {BC: "600000" TC: "Lime" 3D: 0 G: 0} ;这个代表鼠标悬在按钮上方状态下 按钮的样式 ;是个数组 下边是具体含义 格式直接按照他这样来 ;1 数组序号 也就是 BT1Options[2] 里边的 2 的含义: ; 1 代表普通状态下 ; 2 代表鼠标悬停在按钮上 不按下 ; 3 代表鼠标按住按钮 ; 4 代表按钮在 disable 状态下 按钮无效化 ; 5 代表按钮在 Default 状态下 按钮默认 ; 6 估计用不上 直接上老外的原文吧:< used only on tablet computers ; 其中数组的第一个必须有 也就是上边的BT1Options 后边的根据需要添加 ; ;2 BC是Background Color的缩写 就是代表按钮的颜色 ; 使用的是RBG色 例如:00FF00 或者HTML色 例如"Red" ; "|" 前边的 也就是上边的"A00000" 外围颜色 后边的是中心颜色 ; 也可以里外用一种颜色直接 像这样 BC: "600000" ; ;3 TC是Text Color的缩写 也就是按钮上边文字的颜色 ; 参照背景颜色BC ; ;4 3D表示的是按钮的样式 大家自己改改看就知道了: ; 0 普通 ; 1 中间鼓起 ; 2 垂直纹理 ; 3 水平纹理 ; 9 老外写的背景图片 大家自己试试吧 原文:BC contains the picture"s path or HBITMAP handle ; 默认为 0 ; ;5 G代表Gamma Correction 图像灰度矫正 这个太专业 我也不懂 大家自己试试吧 ; 0 表示否 ; 1 代表是 ; 默认为 0 ;解释完毕 ; ;调用函数 参数依次填入 这里的第三个函数"边界宽度"就缺省了 默认0 CreateImageButton HBT1 BT1Options ">完整的函数:CreateImageButton HWND Options Margins 0 有三个需要输入的参数 第一个是按钮的句柄值 必填 第二个是个数组 必填 第三个是按钮的边界宽度 可填值 0 1 2 3 4 值越高边框越宽 不填的话默认为0 ;这是一个简单事 [更多]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

a7660331a

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值