苹果MAC视网膜屏pyautogui的坐标转换

news/2024/12/22 0:01:00/

Python基础之图像识别_这么神奇的博客-CSDN博客_python图像识别

在学习上面文章的时候,我把源码复制下来调试的过程中发现两个问题

1、locateOnScreen识别不到图像

locateOnScreen返回None,原因是默认参数confidence=1,过于精确,导致识别率低,解法调低识别精度即可,为什么是0.9呢? 以为一开始我设置0.5发现经常会点到(手动狗头)

loc = pyautogui.locateOnScreen('zan.png', confidence=0.9)
print(loc)

2、locateOnScreen识别到图像后定位不准

py_w, py_h = pyautogui.size()    #返回当前屏幕分辨率
print(py_w, py_h)

pyautogui识别出来的屏幕分辨率是1792*1120

但是pyautogui.locateOnScreen返回的位置却超出此范围。一开始怀疑是接了显示器导致的,把显示器关了还是一样。然后怀疑的Mac视网膜屏的原因,但是看了下这两者的分辨率不是简单倍数关系。

于是我通过把屏幕右上角的菜单按钮截图保存menu.png,进行图像定位

Box(left=3491, top=0, width=92, height=44)
Point(x=1768.5, y=11.0)

由此发现,定位出来的x坐标 + 图片宽度3491+92 = 3583

而pyautogui.size()的宽度1792 * 2 = 3584

二者只差了一个像素,于是得出结论,在视网膜屏上,pyautogui的图像定位坐标与点击坐标相差两倍。于是对原文章的代码改造如下:

#! python3
# -*- coding: utf-8 -*-import pyautogui
import timepy_w, py_h = pyautogui.size()  # 返回当前屏幕分辨率
print(py_w, py_h)
ratio = 2.0def zan(loc):time.sleep(0.5)  # 等待 0.5 秒left, top, width, height = loccenter = pyautogui.center((left / ratio, top / ratio, width / ratio, height / ratio))  # 寻找 图片的中心print(center)pyautogui.click(center)  # 点击print('点赞成功!')def find_and_zan():while True:loc = pyautogui.locateOnScreen('zan.png', confidence=0.9)print(loc)if loc:zan(loc)  # 调用点赞函数else:pyautogui.scroll(-500)  # 本页没有图片后,滚动鼠标;print('没有找到目标,屏幕下滚~')find_and_zan()

另外有个问题我没整明白,希望有大神路过可以指点下。

为什么pyautogui识别出来的屏幕分辨率是1792*1120,即使是乘以2后,3584*2240,也和实际的分辨率3072*1920不一样啊,这是为啥??


http://www.ppmy.cn/news/545834.html

相关文章

屏幕显示技术

本文主要介绍多种屏幕显示技术,主要是三大类,LCD,LED,OLED。 一、LCD LCD(Liquid Crystal Display)中文是液晶显示器。 LCD 的显示技术有很多,常见的有TFT,IPS,SLCD等…

springboot 新农村信息化管理与服务平台-计算机毕设 附源码83372

springboot 新农村信息化管理与服务平台 目 录 摘要 1 绪论 1.1新农村信息化概念 1.2研究内容 1.3springboot框架介绍 1.4论文结构与章节安排 2 新农村信息化管理与服务平台系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析…

移动端视网膜(Retina)屏幕下1px边框线的解决方法

本文主要介绍几种 移动端视网膜(Retina)屏幕下1px边框线的解决方法。 1、通过viewport rem的方式来兼容。 目前这种兼容方案相对比较完美,适合新项目(老项目改用REM单位成本会比较高)。 淘宝M首页 就是这种方案。 在d…

传苹果正在生产5英寸视网膜屏幕iPhone或iPad

众所周知,全球首款“视网膜”显示屏手机是苹果公司于2010年推出的iPhone4,视网膜屏幕是一种具备超高像素密度的液晶屏,它可以将960640的分辨率压缩到一个3.5英寸的显示屏内。也就是说,该屏幕的像素密度达到326像素/英寸(ppi)。随后…

视网膜屏 retina屏

/*默认*/ an{background-image:url(img1x.png); } /*2*/ media screen and (-webkit-min-device-pixel-ratio:2){background-image:url(img2x.png); }/*2*/ media screen and (-webkit-min-device-pixel-ratio:3){background-image:url(img3x.png); }/*js*/ var pixelRadio wi…

【前端】移动端布局--视网膜屏幕(retina屏幕)清晰度解决方案

视网膜屏幕指的是屏幕的物理像素密度更高的屏幕,物理像素可以理解为屏幕上的一个发光点,无数发光的点组成的屏幕,视网膜屏幕比一般屏幕的物理像素点更小,常见有2倍的视网膜屏幕和3倍的视网膜屏幕,2倍的视网膜屏幕&…

iPhone 14系列屏幕适配

1、iPhone 14 显示屏: 6.1“ 超级视网膜 XDR OLED屏幕分辨率(点): 390 x 844原始分辨率(像素): 1170 x 2532 (460 ppi)​ 状态栏高 47 ,安全区域尺寸…

MacBook Pro视网膜屏幕深入分析(图)(1)

新款MacBook Pro发布后,我们先后对其屏幕分辨率、固态硬盘/USB 3.0性能进行了简单的考察,现在该好好审视一下Retina视网膜屏幕了。 MacBook Pro 15寸标准版、视网膜版配置表 屏幕性能分析 光面标准版MBP使用了标准的液晶屏排列方式,两层玻璃加…