python autogui 对于屏幕的操作

时间:2025-06-28 07:22:54  阅读量:  分类:标签:

import pyautogui as pag
pag.screenshot('123.jpg')                      #截屏保存的图像文件,或者文件路径,不写默认同一个目录。
pag.screenshot('abc.jpg',region=(100,100,500,500)) #区域截图,前面两个参数是左上角的xy,后面参数是右下角的x,Y.
im = pag.screenshot(region=(100,100,500,500))   #区域截图,不想保存为图片,而是把数据直接放在程序中处理。
print(im)                                      #打印出来的数据可以用pillow 和opendv,这两个库去处理。

【图片匹配图,和灰度,都需要安装opencv库】,查询图片参数操作。

#-------------------------找到图片位置的信息相关参数------------
import pyautogui as pag
pic=03.png     #本地放置一个图片
pos=pag.locateOnScreen(pic,confidence=0.8)  #和本地图片相似80%,就可以确认。
print(pos) #打印屏幕和03相同图像的四个坐标。XY坐标,和图像宽高度坐标。
print(pos[2]) #因为输出的是元组,所以可以根据下标,选择自己需要的数据,当前是宽度数据。
print(pos.width) #打印宽度,和上面用下标一样效果,两种访问方式
print(pos.left) #打印X轴
print(pos.top) #打印y轴
 
"""confidence=0.8,图片相似度80%就可以返回,需要安装opencv库,才能用这个功能。
调用了 locateOnScreen()函数,传入变量pic(即图像路径)作为参数,在屏幕上搜索,并返回相关坐标数据,【0.8模糊匹配。】 
还有两个参数是灰度和区域,graysacle=True 灰度就是把查找屏幕全部变成灰色【找的更快】 ,使用这些功能都必须要安装opencv库。
region=(100,100,300,300),可以在指定区域内搜索。 区域的作用是,只在区域内找,加快查找速度和准确性。"""

在屏幕搜索和02相同的图片,并且把鼠标移动到图片中心。【图片匹配图,和灰度,都需要安装opencv库】

方法1:找到XY坐标-找到xy中心坐标,鼠标移动过去。
# import pyautogui as pag
# pic='02.jpg'
# pos=pag.locateOnScreen(pic)
# pos = pag.center(pos) #定位到图片以后,找到图片的中心点。
# pag.moveTo(pos.x,pos.y,0.5) #移动到图片的X,Y点,也就是中心点,和下方案例结果是一样的,0.5秒内移动匀速移动过去。
# -------------------------------------------- 
方法2:直接找到图片中心坐标,鼠标移动过去。
import pyautogui as pag
# pic='02.jpg'
# pos=pag.center(pos) #定位图片的中心点。
# pag.moveTo(pos.x,pos.y,0.5) #移动到图片的X,Y点,也就是中心点,移动过去,0.5秒内移动匀速移动过去。

一次性返回全部相近图片,搜索顺序是从左上角往右下角依次查找。

# 在 Python 中使用 pyautogui.locateAllOnScreen() 方法时默认返回值是生成器,不是图片坐标,需要list转换过来。
# 这是因为该方法设计上采用生成器实现延迟迭代,避免一次性加载所有匹配结果占用过多内存。
# 若需获取具体坐标,需通过迭代生成器或转换为列表。以下是详细解决方案:
 
# tttt  ttt     ttttt
# tttt  ttt     ttttt
# tttt  ttt     ttttt
 
#方法:使用 list() 转换为坐标列表
#import pyautogui as pag
#pic = 'tt.png'
# 将生成器转换为列表,获取所有坐标
#ttq=pag.locateAllOnScreen(pic)
#tt = list(pag.locateAllOnScreen(pic))
#print(ttq)
#print(tt)

图片像素查找

# 在当前屏幕上找,x轴600,y700轴的位置上,rgb的颜色是多少
# import pyautogui as pag
# c=pag.pixel(600,700)
# print(c)
# 在指定图片上,找到x轴600,y700轴的位置上,rgb的颜色是多少
# import pyautogui as pag
# im=pag.screenshot()#截图当前屏幕
#在截图屏幕上找到X600。Y700坐标位置点上的rgb,
# 多写了一个括号的意思是,600,和700,必须当成一个参数传进去,如果没有外面的括号,系统会认为放了两个参数,
#也就是说必须要把一个元素参数放进去,而不是放两个数字,。
# c=im.getpixel((600,700))
# print(c)
#查看(RGB颜色:43, 43, 43,)是否和X轴600,Y700,那个点位的像素匹配,匹配返回True
# import pyautogui as pag
# ff=pag.pixelMatchesColor(600,700,((43, 43, 43)))
# print(ff)

用颜色定位,用搜索图片定位,效果是一样的,只不过用颜色定位,速度会快一些。

# 匹配图片也有模糊匹配的参数(相似度多少就确认),但是和鼠标的参数名称不一样。【案例】
import pyautogui as pag
#tolerance=*:如果rgb是:55, 55, 43 ,也会匹配,因为模糊值只要在12以内,都认为一样。
ff=pag.pixelMatchesColor(600,700,((43, 43, 43)),tolerance=12) 
print(ff)