Python numpy数组索引器错误:索引超出大小为1080的轴0的界限

Python numpy数组索引器错误:索引超出大小为1080的轴0的界限,python,numpy,Python,Numpy,我正在尝试迭代图像的像素,更具体地说,是通过ImageGrab模块获取的屏幕截图。这是我的密码: from PIL import ImageGrab as ig import numpy as np from pynput.mouse import Controller from pynput.keyboard import Key from pynput import keyboard mouse= Controller() def onpress(key): try:

我正在尝试迭代图像的像素,更具体地说,是通过ImageGrab模块获取的屏幕截图。这是我的密码:

from PIL import ImageGrab as ig
import numpy as np
from pynput.mouse import Controller
from pynput.keyboard import Key
from pynput import keyboard

mouse= Controller()

def onpress(key):

    try:
        pressed_key= key.char
    except AttributeError:
        pressed_key= str(key)[4:]

    if pressed_key == 'esc':
        print('Quitting process')
        return False

    elif pressed_key == 'space':
        mousepos= mouse.position
        pic= ig.grab()

        arr= np.array(pic)

        print(f'Pixel color at {mousepos}: RGB{arr[mousepos]}')
        # here the error is raised

with keyboard.Listener(on_press= onpress) as listener:
    listener.join()
我想在按下空格键时检查鼠标位置像素的RGB颜色。它适用于“最左上方”像素,以下是一些输出示例:

1) Pixel color at (150, 193): RGB[242 243 244]
2) Pixel color at (579, 302): RGB[0 0 0]
3) Pixel color at (887, 108): RGB[145 89 4]
但是,当我在屏幕右下角轻轻移动鼠标时(从中间往右下移动一点点),会产生如下错误:

    Traceback (most recent call last):
  File "imagegrab.py", line 64, in <module>
    listener.join()
  File "C:\Users\marca\Anaconda3\lib\site-packages\pynput\_util\__init__.py", line 199, in join
    six.reraise(exc_type, exc_value, exc_traceback)
  File "C:\Users\marca\Anaconda3\lib\site-packages\six.py", line 692, in reraise
    raise value.with_traceback(tb)
  File "C:\Users\marca\Anaconda3\lib\site-packages\pynput\_util\__init__.py", line 154, in inner
    return f(self, *args, **kwargs)
  File "C:\Users\marca\Anaconda3\lib\site-packages\pynput\keyboard\_win32.py", line 237, in _process
    self.on_press(key)
  File "C:\Users\marca\Anaconda3\lib\site-packages\pynput\_util\__init__.py", line 75, in inner
    if f(*args) is False:
  File "imagegrab.py", line 42, in onpress
    print(f'{count}) Pixel color at {mousepos}: RGB{arr[mousepos]}')
IndexError: index 1152 is out of bounds for axis 0 with size 1080
这非常有效(这里我指的是屏幕的左上角和右下角):

我认为这与我的笔记本电脑的屏幕DPI有关,因为之前我不得不应用一个建议的修复程序,正如我所做的那样


如您所见,错误(1152)中显示的数组索引溢出了常见的1920x1080高清屏幕分辨率。我不知道该怎么做才能解决这个问题,所以我希望我已经说清楚了,有人可以帮助我。

这不是一个真正的问题。任何处理屏幕抓图的都是错误的。或者,不,鼠标的位置是关闭的。我同意这不是一个具体的numpy问题,但它涉及。鼠标位置没有关闭,在1920x1080屏幕上不能超过1080,但不知何故numpy引起了这个错误。“索引1152”怎么没有关闭?我的意思是它在屏幕上不能超过1080,尽管如此,这是我得到的可能是坐标被翻转了,即它们是x,y而不是假设的y,x?这不是一个很重要的问题。任何处理屏幕抓图的都是错误的。或者,不,鼠标的位置是关闭的。我同意这不是一个具体的numpy问题,但它涉及。鼠标位置没有关闭,在1920x1080屏幕上不能超过1080,但不知怎么的,numpy引起了这个错误。“索引1152”怎么没有关闭?我的意思是它在屏幕上不能超过1080,尽管如此,这就是我得到的可能是坐标被翻转了,即它们是x,y而不是假设的y,x?
pixels= pic.load()
print(f'{count}) Pixel color at {mousepos}: RGB{pixels[mousepos]}')
1) Pixel color at (0, 0): RGB(56, 36, 12)
2) Pixel color at (1914, 1016): RGB(22, 15, 5)