python autogui 对于屏幕的操作
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)