一.实现思路

  1. 对整个屏幕进行截图
  2. 将目标点击图与屏幕截图进行对比,找到目标点击图在屏幕截图中的坐标x,y
  3. 实现点击

二.具体实现

需要导入的包

from ctypes import windll
import win32api
import win32con
import time
import aircv as ac
from PIL import ImageGrab

1.对整个屏幕截图

#截取屏幕
#设置休眠时间,方便切换页面
print("请在3秒内切换到需要点击的页面!")
time.sleep(3)
filename = 'screen.png'
im = ImageGrab.grab()
im.save(filename)

2.通过对比获取坐标

#获取x,y
imgsrc = 'screen.png'
#screen.png为屏幕截图文件
imsrc = ac.imread(imgsrc)
imgobj = 'b.png'
#b.png需要识别点击的图片,需要自己上传
imobj = ac.imread(imgobj)
match_result = ac.find_template(imsrc, imobj)
print(match_result)
result = str(match_result)
#注意这里只能为int类型,否则windll.user32.SetCursorPos(x, y)会报错
x = int(result[12:14])
#工具定位为与程序定位会有偏差,横坐标不变,纵坐标减去25左右(根据实际情况调试)
y = int(result[18:21])-25
print(x,y)

3.实现连续点击

for i in range(10):# 鼠标移动至指定位置windll.user32.SetCursorPos(x, y)#鼠标点击操作# MOUSEEVENTF_LEFTDOWN为鼠标左键按住,# MOUSEEVENTF_LEFTUP为鼠标左键松开,# MOUSEEVENTF_RIGHTDOWN为鼠标右键按住,# MOUSEEVENTF_RIGHTUP为鼠标右键松开,win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, x, y)time.sleep(0.05)win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, x, y)print("点击")#设置休眠方便切换页面,结束程序time.sleep(2)
print("点击完成!")

三.完整代码

#实现连续点击屏幕
from ctypes import windll
import win32api
import win32con
import time
import aircv as ac
from PIL import ImageGrab#截取屏幕
#设置休眠时间,方便切换页面
print("请在3秒内切换到需要点击的页面!")
time.sleep(3)
filename = 'screen.png'
im = ImageGrab.grab()
im.save(filename)#获取x,y
imgsrc = 'screen.png'
imsrc = ac.imread(imgsrc)
imgobj = 'b.png'
imobj = ac.imread(imgobj)
match_result = ac.find_template(imsrc, imobj)
print(match_result)
result = str(match_result)
#注意这里只能为int类型,否则windll.user32.SetCursorPos(x, y)会报错
x = int(result[12:14])
#工具定位为与程序定位会有偏差,横坐标不变,纵坐标减去25左右(根据实际情况调试)
y = int(result[18:21])-25
print(x,y)#循环点击
for i in range(10):# 鼠标移动至指定位置windll.user32.SetCursorPos(x, y)#鼠标点击操作# MOUSEEVENTF_LEFTDOWN为鼠标左键按住,# MOUSEEVENTF_LEFTUP为鼠标左键松开,# MOUSEEVENTF_RIGHTDOWN为鼠标右键按住,# MOUSEEVENTF_RIGHTUP为鼠标右键松开,win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, x, y)time.sleep(0.05)win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, x, y)print("点击"+str(i))#设置休眠方便切换页面,结束程序# time.sleep(2)
print("点击完成!")

四.使用步骤

  1. 程序调试好后,将b.png和程序放在同一个目录下。

  2. 运行程序,在3秒内切换到需要点击的页面,运行完成即可。

Python通过图片识别实现连续点击相关推荐

  1. python智能图片识别系统(图片切割、图片识别、区别标识)

    目录 技术介绍 运行效果 关键代码 写在最后 技术介绍 你好! python flask图片识别系统使用到的技术有:图片背景切割.图片格式转换(pdf转png).图片模板匹配.图片区别标识. 运行效果 ...

  2. Python批量图片识别并翻译——我用python给女朋友翻译化妆品标签

    周末福利:文末赠书活动 最近小编遇到一个生存问题,女朋友让我给她翻译英文化妆品标签.美其名曰:"程序猿每天英语开发,英文一定很好吧,来帮我翻译翻译化妆品成分","来,帮我 ...

  3. Python实现图片识别加翻译,高薪必备技能

    Python使用百度AI接口实现图片识别加翻译 python python诞生30周年 encoding:utf-8 import requests import base64 from PIL im ...

  4. python简单图片识别_用Python进行简单的图片识别(1)

    起因是这样的,我想买一个定焦镜头,但也不是必需品,可以长期观望购买.最初的想法是,写个程序,每天爬一下各大电商网站的价格,或者直接爬etao把该镜头的价格记录下来,突然有一个惊爆的低价,就发邮件通知. ...

  5. Python实现图片识别加翻译

    Python使用百度AI接口实现图片识别加翻译 python诞生30周年 # encoding:utf-8import requests import base64 from PIL import I ...

  6. Python之图片识别

    今天我们来实现用Python来进行图片的文字提取. 技术原理:通过借助ORC和Tesseract工具来实现 文字识别是ORC的一部分内容,ORC的意思是光学字符识别,通俗讲就是文字识别.Tessera ...

  7. python视频图片识别算法_python利用Opencv进行人脸识别(视频流+图片)

    首先:需要在在自己本地安装opencv具体步骤可以问度娘 如果从事于开发中的话建议用第三方的人脸识别(推荐阿里) 1.视频流中进行人脸识别 # -*- coding: utf-8 -*- import ...

  8. python 基于图片识别针对不同的分辨率进行鼠标点击

    使用场景:再执行完成自动化后,需要给boss发一个im软件的消息(cs架构),需要打开im软件,然后找到boss,点击头像进入聊天页面,然后复制一下文本并发送!假设不用翻页哈 脚本思路:每次执行点击之 ...

  9. python相似图片识别_Python+Opencv识别两张相似图片

    Python+Opencv识别两张相似图片 在网上看到python做图像识别的相关文章后,真心感觉python的功能实在太强大,因此将这些文章总结一下,建立一下自己的知识体系. 当然了,图像识别这个话 ...

最新文章

  1. 网红快餐店_在一家快餐店工作解释了AJAX基础知识
  2. 游戏行业中的职位:你可以做什么
  3. android 获取Service(服务)的运行状态
  4. 第 10 章 建造者模式【Builder Pattern】
  5. php phpanalysis2.0,使用phpAnalysis打造PHP应用非侵入式性能分析器
  6. 自然场景人脸检测技术实践
  7. 数据结构之插入排序:希尔排序(缩小增量排序)
  8. for循环递减_C++ 循环:方阵队列,内外层叠
  9. 云钉一体,支撑5亿用户1900万企业背后的技术复盘
  10. ETL工具kettle之Java脚本+Elasticsearch bulk insert
  11. dll反编译(dll反编译工具)
  12. 2021-11-09 PMIC RK817 处理POWER键流程linux 部分的简单分析,dts 中会用 interrupt-parent interrupts去处理按键的中断。
  13. 中超赛程分析(5)--德比战
  14. html 插入虾米音乐,虾米音乐导入导出方法
  15. xp获取计算机管理员权限,xp管理员权限的获取与防范
  16. DJL-Java开发者动手学深度学习之线性回归
  17. form表单提交既有文字也有图片的情况下,增加enctype属性
  18. Bitmap高效加载
  19. 手把手教你读懂源码,View事件的注册和接收详细剖析
  20. LeetCode 1091 二进制矩阵中的最短路径问题[BFS 队列] HERODING的LeetCode之路

热门文章

  1. java输入输出图书管理系统设计_基于JAVA的图书管理系统设计(含源文件).doc
  2. 海思篇之开机logo的加载(Hi3531a代码版)
  3. 快手2020校招笔试题 2019.8.25
  4. 微视频试水社交网站 渐趋移动互联应用
  5. Winowd系统查看电脑可以扩展的最大内存
  6. 网口有两个灯各代表什么意思
  7. 山东财经大学python期末考试题型_山东财经大学2012012学年第二学期期末试题
  8. [Swift]Set(集)转换为Array(数组)
  9. 前端JS 烧脑面试题大赏
  10. python实现调用搜狗号码通返回查询内容