如何与numpy数组中的RGBA数据列表进行alpha合成?

问题描述 投票:0回答:1

按照this公式将两个颜色值混合在一起,我希望将其应用于RGBBA图像数据的n numpy数组(尽管实际上,预期的用例将具有非常低的上限)数组,可能> 5)。在上下文中,此过程将限于形状相同的数组。

理论上,我可以通过迭代来实现这一目标,但希望这将需要大量的计算并且效率极低。

在两个数组之间相同位置的两个元素之间应用函数的最有效方法是什么?[[整个数组中]

一个宽松的例子:

# in context, the numpy arrays come from here, as either numpy data in the # first place or a path def import_data(source): # first test for an extant numpy array try: assert(type(source) is np.ndarray) data = source except AssertionError: try: exists(source) data = add_alpha_channel(np.array(Image.open(source))) except IOError: raise IOError("Cannot identify image data in file '{0}'".format(source)) except TypeError: raise TypeError("Cannot identify image data from source.") return data # and here is the in-progress method that will, in theory composite the stack of # arrays; it context this is a bit more elaborate; self.width & height are just what # they appear to be—-the final size of the composited output of all layers def render(self): render_surface = np.zeros((self.height, self.width, 4)) for l in self.__layers: foreground = l.render() # basically this just returns an np array # the next four lines just find the regions between two layers to # be composited l_x1, l_y1 = l.origin l_x2 = l_x1 + foreground.shape[1] l_y2 = l_y1 + foreground.shape[0] background = render_surface[l_y1: l_y2, l_x1: l_x2] # at this point, foreground & background contain two identically shaped # arrays to be composited; next line is where the function i'm seeking # ought to go render_surface[l_y1: l_y2, l_x1: l_x2] = ?

python arrays numpy multidimensional-array alphablending
1个回答
0
投票
从这两个RGBA图像开始:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.