【发布时间】:2021-07-05 08:30:03
【问题描述】:
我想在我的 macbook 屏幕上获取当前鼠标位置的 RGB 值。 现在它显示不正确:当我将鼠标悬停在黑色图像上时,RGB 值不会靠近 (0, 0, 0),它保持为 (181, 201, 233)。当我将鼠标光标放在正在播放的 YT 视频上时,RGB 值不会改变。只有当我移动鼠标时,RGB 值才会发生变化,但不会相应地发生变化。我已经在 IDLE/new 文件中尝试了这些功能:
1.
pyautogui.displayMousePosition() #output: X: 183 Y: 291 RGB: (174, 188, 211)
2.
posXY = pyautogui.position()
print(pyautogui.pixel(posXY[0], posXY[1])) #output: RGB(red=200, green=212, blue=224)
3.
im = pyautogui.screenshot()
pxRGB = im.getpixel((PosXY[0], PosXY[1])) #output: (181, 203, 229, 255)
4.
pxRGB = ImageGrab.grab().getpixel((PosXY[0], PosXY[1])) #output: (167, 192, 225, 255)
所有这些输出都是错误的,但是起作用的是从互联网下载黑白图像打开它并从中获取像素值:
im = Image.open("black-white.jpg").convert('RGB')
px = im.getpixel((PosXY[0], PosXY[1]))
print(px) #output (0, 0, 0) and (255, 255, 255) working!
现在我尝试对笔记本电脑的屏幕截图(代码和输出代码)执行相同操作,并使用该 img,但这仍然没有给我正确的 RGB 值。 (即使鼠标位置不正确,我也找不到比 (50, 46, 76) 更暗的点,而 SC 上有很多)
任何帮助将不胜感激!
额外信息:Macbook pro Catalina 10.15.7 我首先在 Python 3.8 和 3.9 上尝试过鼠标位置显示正确,左上角 (0, 0) 和右下角 (1679, 1049)。 Pyautogui.displayMousePosition() 在我的 Windows 7/10 笔记本电脑上给出了正确的 RGB 值。我看到使用 pyautogui.screenshot() 制作的屏幕截图只显示我的背景,而不是打开像互联网或某些文件这样的窗口。但是'不在代码中'Sc看起来很正常,尽管默认情况下没有分配给他们的.png只是空的:examplescreenshot12-23-3 而且我可以在网上找到的所有代码都不适合我。为了能够从函数中看到任何 RGB 值,我必须先导入 sys,然后将 sys.platform = darwin 设置为 sys.platform = '_' 我不在虚拟环境中工作,也没有使用 python 的经验。我并不关心获得像素 RGB 值需要多长时间。在我的 macbook 上更改 backgroundImg 确实会导致不同的输出,但仍然不正确。
【问题讨论】:
标签: python python-3.x macos pyautogui getpixel