我正在开发一个程序,该程序需要截屏并将像素保存在具有3轴(X,Y和RGB值本身)的Numpy数组中,并且不能正确地求和最后一个轴。
我已经搜索了有关此主题的信息,尽管我尝试了诸如“ 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”。感谢您的任何帮助,谢谢。
答案 0 :(得分: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)
P.S。由于我使用的是* nix,因此无法检查PIL.ImageGrab
的工作情况,因为这仅在MacOS和Windows上有效。