Python 自动化办公之自动识别并点击按钮

  • 前言
  • 过程
    • 安装用到的库
    • 使用pyautogui自动点击按钮
    • 使用OpenCV和pyscreeze加速
  • 参考

前言

遇到一个需要电脑的体力劳动,找到了Python控制鼠标的库,结合之前用过的OpenCV识别可以屏幕内容,可以实现略微复杂的自动化办公操作。

过程

安装用到的库

安装方法 作用
pillow pip install pillow 加载图片
pyscreeze pip install pyscreeze 截屏
pyautogui pip install pyautogui 代码操作鼠标键盘
opencv-python pip install opencv-python 识别并匹配图片

使用pyautogui自动点击按钮

检查屏幕上是否有某个按钮,有的话就点击

from time import sleep
import pyautogui
from PIL import ImageGrab, Image#事先对按钮截图
zhengnengliangImg= Image.open("zhengnengliang.png")
#截图当前屏幕并找到之前加载的按钮截图
msg = pyautogui.locateOnScreen(zhengnengliangImg, grayscale=True,confidence=.9)
if msg==None: print ("没找到")
else:x,y,width,height=msgprint ("该图标在屏幕中的位置是:X={},Y={},宽{}像素,高{}像素".format(x,y,width,height))#左键点击屏幕上的这个位置pyautogui.click(x,y,button='left')

使用OpenCV和pyscreeze加速

写好上面的程序发现了一个问题,就是使用pyautogui.locateOnScreen速度太慢了,不如用之前玩过的OpenCV识别图片,所以略微修改程序,同样,为了加速截图速度使用pyscreeze截图。这样识别位置操作差不多快了10倍左右

from time import sleep
import pyautogui
from PIL import ImageGrab, Image
import pyscreeze
import cv2# 屏幕缩放系数 mac缩放是2 windows一般是1
screenScale=1#事先读取按钮截图
target= cv2.imread(r"zhengnengliang.png",cv2.IMREAD_GRAYSCALE)
# 先截图
screenshot=pyscreeze.screenshot('my_screenshot.png')
# 读取图片 灰色会快
temp = cv2.imread(r'my_screenshot.png',cv2.IMREAD_GRAYSCALE)theight, twidth = target.shape[:2]
tempheight, tempwidth = temp.shape[:2]
print("目标图宽高:"+str(twidth)+"-"+str(theight))
print("模板图宽高:"+str(tempwidth)+"-"+str(tempheight))
# 先缩放屏幕截图 INTER_LINEAR INTER_AREA
scaleTemp=cv2.resize(temp, (int(tempwidth / screenScale), int(tempheight / screenScale)))
stempheight, stempwidth = scaleTemp.shape[:2]
print("缩放后模板图宽高:"+str(stempwidth)+"-"+str(stempheight))
# 匹配图片
res = cv2.matchTemplate(scaleTemp, target, cv2.TM_CCOEFF_NORMED)
mn_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
if(max_val>=0.9):# 计算出中心点top_left = max_locbottom_right = (top_left[0] + twidth, top_left[1] + theight)tagHalfW=int(twidth/2)tagHalfH=int(theight/2)tagCenterX=top_left[0]+tagHalfWtagCenterY=top_left[1]+tagHalfH#左键点击屏幕上的这个位置pyautogui.click(tagCenterX,tagCenterY,button='left')
else:print ("没找到")

这个速度就比较满意了

参考

  1. How can I locate something on my screen quickly in Python?

  2. Python fast screenshots and locateOnScreen

  3. opencv学习笔记十八:模板匹配(cv2.matchTemplate、cv2.minMaxLoc)

  4. 模板匹配-cv2.matchTemplate()、cv2.minMaxLoc()

  5. cv2.matchTemplate模板匹配和cv2.minMaxLoc()函数

Python 自动化办公之自动识别并点击按钮相关推荐

  1. python自动化办公:邮件篇 (定时邮件问候女票so easy)

    前言和准备工作 如果你能找到一个要看邮件的女票哈,本文能帮你用程序实现在每天不同时间段给女友定时给女友发消息,不错过早上,中午.晚安! 而你自己却可以玩游戏,不管这回事. 你告诉我看邮件的女生少,别着 ...

  2. python自动化办公能做什么-用Python自动办公,做职场高手(完结)

    教程目录: ┣━07.S2 Word自动化处理,又快又好做文档 ┃ ┣━36 本章介绍 ┣━08.[Word]S2-1 轻松用Python快速生成Word文档 ┃ ┣━45.[真实案例]S2-1-3 ...

  3. python自动化办公之爬取HTML图片写入PPT实战

    python自动化办公之批量图片导入PPT 昨天,大Boss找到一个网页,觉得里面的图片内容特别好,想把它下载下来作为学习资料,整理整理教导下属.但是,手动一张一张的保存图片太慢了,问我可不可以下载下 ...

  4. Python自动化办公:word文件操作教程

    在后台回复[阅读书籍] 即可获取python相关电子书~ Hi,我是山月. 之前给大家完整的介绍了用python操作excel的几个库:xlrd.xlwt.openpyxl. 山月也已经整理好了,还没 ...

  5. 好用到爆的Python自动化办公教程pdf,Python × Excel × Word × PPT 一次搞定

    在这个自动化时代,我们有很多重复无聊的工作要做.想想这些你不再需要一次又一次地做的无聊的事情,让它自动化,让你的生活更轻松.那么在本文中,我将向您介绍一个好用到爆的Python自动化办公教程pdf,P ...

  6. Python自动化办公--长图拼接,视频合并

    Python自动化办公–长图拼接,视频合并 点击访问我的博客系统,了解更多有趣内容哦

  7. 手把手教你python自动化办公(三)---PPT批量修改

    手把手教你python自动化办公(三)---PPT批量修改 PPT批量修改 场景模拟:当公司让你制作10000个不同数据但背景相同的PPT时,你是干上三天,还是小手一挥,十秒搞定? 1.设计你想要的P ...

  8. 盘点一个Python自动化办公实战案例

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 阳和不散穷途恨,霄汉长怀捧日心. ...

  9. 盘点一个Python自动化办公的实战案例

    点击上方"Python共享之家",进行关注 回复"资源"即可获赠Python学习资料 今 日 鸡 汤 岭猿同旦暮,江柳共风烟. 大家好,我是皮皮. 一.前言 前 ...

  10. python自动化办公入门书籍-视频教程-零基础Python自动化办公(漫画版)-Python

    零基础Python自动化办公(漫画版) 现任某大型游戏公司后端工程师,阿里云大学云学院导师,中国人工智能协会高级会员,HackPython工作室负责人,曾出版书籍<深入浅出生成对抗网络:原理剖析 ...

最新文章

  1. python 求和为正整数n的连续整数序列
  2. ASP.NET Web API 基本操作(CRUD)
  3. 36、重分布配置实验之route-map
  4. 内核中的竞争状态和互斥(简述)
  5. linux修改last权限,Linux常用命令2/3(有关用户、权限管理的命令)--Unix/Linux操作系统04...
  6. C++ 调试配置的项目设置
  7. android toolbar 颜色渐变,android – 如何使渐变形状留在CollapsingToolbarLayout标题后面...
  8. 【转】vue双向绑定原理分析
  9. 【NLP】学不会打我 半小时学会基本操作 13 孪生网络
  10. 三款适合HDMI信号分配的分配器芯片
  11. C++:多态性与虚函数 | 虚函数的注意点 | 汇编角度来看动态联编过程
  12. MyBatisX插件没有出现蓝色鸟
  13. 反悔贪心 + 优先队列:PIPI的逃跑路线Ⅳ
  14. 移动医疗APP的渠道策略
  15. 独家全新娱乐性超高的喝酒神器微信小程序源码支持流量主解锁多人对战等等
  16. ios视频循环播放实现
  17. ScrollView/HorizontalScrollView常用技巧,附源码
  18. Python之进程 3 - 进程池和multiprocess.Poll
  19. MySQL面试题和答案
  20. oracle exp 导出字符集,oracle exp/imp 字符集

热门文章

  1. “终于懂了” 系列,安卓工程师的面试题
  2. iOS - UIButton连续点击事件控制
  3. HTTP: CDN缓存机制
  4. 绝对免费搭建不限速私人网盘5T存储空间:Gearhost免费空间+OneIndex程序+Onedrive免费账号
  5. 影视动画专业有木有c语言,那些头秃的专业,不了解一下?
  6. Unity3D数字孪生开发笔记——软件基础篇
  7. mysql入门篇1———单表操作
  8. OGRE关于 Demo_Ocean 例子的分析
  9. 云计算概念及发展历程
  10. 西安电子科技大学计算机考博,西安电子科技大学2017年拟录取申请考核博士生名.PDF...