Я работаю над программой, которая делает снимок экрана и сохраняет пиксели в массиве Numpy с 3 осями (X, Y и само значение RGB) и не может правильно суммировать последнюю ось.
Я искал информацию по этой теме, и хотя я пробовал несколько вещей, таких как "Ось = 2", я не добился прогресса. Я хотел бы держаться подальше от петель. Потому что, хотя они работают, я чувствую, что это в первую очередь побеждает цель суммы.
#Imports
import numpy as np
from PIL import ImageGrab
#Define Hight and Width of screen
height = 1080
width = 1920
#Capture screen with by taking individual RGB values in an array
screen = np.array(ImageGrab.grab(bbox=(0,0,width,height)))
red = np.sum(screen[[0][0]])
green = np.sum(screen[[1][0]])
blue = np.sum(screen[[2][0]])
print(red,blue,green)
Я надеюсь получить результат, что переменные красного, зеленого и синего показывают их соответствующие значения суммы всех пикселей на экране, однако в настоящее время я получаю "1468800" для всех из них. Любая помощь приветствуется, спасибо.
Если я правильно понимаю проблему, просто установка axis=2
должна работать. Вот рабочий пример:
# sample RGB image to work with
In [24]: from skimage import data
In [25]: astronaut = data.astronaut()
In [26]: astronaut.shape
Out[26]: (512, 512, 3)
# sum the RGB values (R+G+B)
In [30]: astronaut_summed = np.sum(astronaut, axis=2)
In [31]: astronaut_summed.shape
Out[31]: (512, 512)
PS Так как я на * nix, я не могу проверить работу PIL.ImageGrab
потому что это работает только на MacOS и Windows.
red
,green
илиblue
. см. эту ветку для получения дополнительной информации: valueerror-setting-an-array-element-with-a-sequence