Возникли проблемы с суммированием по третьей оси в Numpy

1

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

Теги:
rgb
numpy
python-imaging-library

1 ответ

0

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

  • 0
    Я попробовал это и не уверен относительно того, с какой проблемой я сталкиваюсь, поскольку кажется, что это должно работать. это новый код `` `while (True): экран #Capture с получением отдельных значений RGB в массиве screen = np.array (ImageGrab.grab (bbox = (0,0, width, height))) red = np.sum (screen, axis = 2) зеленый = np.sum (screen [[1] [0]]) blue = np.sum (screen [[2] [0]]) `` `и я получаю эту ошибку «Файл» ValueError: установка элемента массива с последовательностью. »
  • 0
    @Grimm_boss, так что проблема в том, что вы не должны назначать какие-либо из red , green или blue . см. эту ветку для получения дополнительной информации: valueerror-setting-an-array-element-with-a-sequence

Ещё вопросы

Сообщество Overcoder
Наверх
Меню