Возникли проблемы с суммированием по третьей оси в Numpy - PullRequest
1 голос
/ 16 апреля 2019

Я работаю над программой, которая делает снимок экрана и сохраняет пиксели в массиве Numpy с 3 осями (X, Y и само значение RGB) и не может правильно суммировать последнюю ось.

Я искал информацию по этой теме, и хотя я пробовал несколько вещей, таких как "Axis = 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» для всех из них. Любая помощь приветствуется, спасибо.

1 Ответ

0 голосов
/ 16 апреля 2019

Если я правильно понимаю проблему, просто установка 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.

...