在numpy中按灰度元素划分RGB图像

Dik*_*rAz 3 python numpy

假设我们有两个形状为 (480, 640, 3) 和 (480, 640) 的数组,比如 RGB 和灰度图像。你如何将第一个数组除以第二个?到目前为止,我使用以下代码,但有没有更好的代码片段?

arr1[:, :, 0] /= arr2
arr1[:, :, 1] /= arr2
arr1[:, :, 2] /= arr2
Run Code Online (Sandbox Code Playgroud)

wwi*_*wii 5

您可以添加另一个轴以arr2使其广播

>>> a = np.ones((2,2,3))
>>> b = np.ones((2,2)) * 2
>>> a
array([[[ 1.,  1.,  1.],
        [ 1.,  1.,  1.]],

       [[ 1.,  1.,  1.],
        [ 1.,  1.,  1.]]])
>>> b
array([[ 2.,  2.],
       [ 2.,  2.]])
>>> a = a / b[:, :, np.newaxis]
>>> a
array([[[ 0.5,  0.5,  0.5],
        [ 0.5,  0.5,  0.5]],

       [[ 0.5,  0.5,  0.5],
        [ 0.5,  0.5,  0.5]]])
>>>
Run Code Online (Sandbox Code Playgroud)