如何在autopy中实现类似PyAutoGUI LocateOnScreen()的图像点击功能?
在autopy中实现类似PyAutoGUI的locateOnScreen()功能
首先得指出你刚才代码的问题:autopy.mouse.click() 方法需要接收的是坐标值(x和y),而不是Bitmap对象,直接传图像肯定会触发TypeError,这是核心错误。
接下来,autopy里其实有对应的图像查找功能,就是 autopy.bitmap.Bitmap.find_bitmap() 方法,它可以实现类似PyAutoGUI中locateOnScreen()的效果——在屏幕上定位目标图像的位置。下面是完整的实现步骤和示例代码:
实现步骤
- 加载你要查找的目标图像
- 捕获当前屏幕的截图
- 在屏幕截图中查找目标图像的位置
- 如果找到,计算图像的中心坐标并执行点击
完整示例代码
import autopy def locate_and_click(target_image_path): # 1. 加载目标图像 try: target_bmp = autopy.bitmap.Bitmap.open(target_image_path) except Exception as e: print(f"加载目标图像失败: {e}") return # 2. 捕获屏幕截图 screen_bmp = autopy.bitmap.capture_screen() # 3. 在屏幕中查找目标图像,threshold是匹配阈值(0-1,值越低匹配越宽松) match_rect = screen_bmp.find_bitmap(target_bmp, threshold=0.9) if match_rect: # 4. 计算图像中心坐标 center_x = match_rect.x + match_rect.width // 2 center_y = match_rect.y + match_rect.height // 2 # 5. 移动鼠标到中心并点击 autopy.mouse.move(center_x, center_y) autopy.mouse.click() print(f"已在坐标({center_x}, {center_y})处点击目标图像") else: print("未找到目标图像") # 调用函数,替换成你的图像路径(建议用原始字符串避免转义问题) locate_and_click(r'C:\Users\carlo\Desktop\prueba\Captura.png')
关键细节说明
find_bitmap()方法返回的是一个Rect对象,包含x(左上角x坐标)、y(左上角y坐标)、width、height四个属性,如果没找到匹配的图像会返回Nonethreshold参数可以调整匹配的严格程度:如果你的目标图像可能有轻微的颜色差异或缩放,可适当降低这个值(比如0.8),但太低可能会误匹配- 路径建议用原始字符串(前缀加
r),这样不用处理反斜杠的转义问题 - 如果需要查找屏幕上的多个匹配项,可以用
find_bitmaps()方法(注意复数形式),它会返回所有匹配的Rect对象列表
内容的提问来源于stack exchange,提问作者Peripatein
相关产品推荐
相关产品推荐

