为什么pyautogui会在指定搜索区域外识别到匹配图像?
pyautogui region参数匹配超出预期范围问题解答
核心原因
region参数格式使用错误
pyautogui的region参数接收的四元组规则为(左上角x坐标, 左上角y坐标, 区域宽度, 区域高度),并非你理解的(左上角x, 左上角y, 右下角x, 右下角y)。
按照你当前填写的region=(750, 25, 1200, 125)计算,实际搜索区域的右边界为750+1200=1950,下边界为25+125=150,你得到的匹配坐标(1649,99)完全在该错误区域范围内,属于正常识别结果。
如果要限定搜索范围为左上(750,25)到右下(1200,125),正确的参数应该先计算宽高:
宽度 = 1200 - 750 = 450
高度 = 125 - 25 = 100
替换为region=(750, 25, 450, 100)即可。系统显示缩放导致坐标不匹配
如果修正region参数后仍然出现超出范围的匹配结果,大概率是系统开启了显示缩放(例如Windows的125%/150%缩放、macOS的Retina缩放)。pyautogui.displayMousePosition()返回的是系统逻辑坐标,而图像匹配使用的是屏幕物理像素坐标,缩放比例会导致两者错位。可将系统缩放调整为100%,或在代码中乘以对应缩放系数修正坐标。多屏拓展配置异常
若使用多屏拓展显示且主屏不是最左侧屏幕,部分版本的pyautogui存在多屏坐标计算异常问题,也可能导致匹配坐标与预期范围不符。
内容的提问来源于stack exchange,提问作者user9686961
相关产品推荐
相关产品推荐

