Обновленный ответ
Я вижу из вашего комментария, что вам нужно больше гибкости, чем я понял из вашего вопроса. Попробуйте это:
In [85]: im = np.array(Image.open('image.png').convert('RGBA'))
In [86]: for x in np.argwhere(im[:,:,3]==0):
...: im[x[0],x[1],:]=np.random.randint(0,255), np.random.randint(0,255), np.random.randint(0,255), np.random.randint(0,255)
Оригинальный ответ
Я думаю, вы имеете в виду это:
In [32]: im = np.array(Image.open('image.png').convert('RGBA'))
In [33]: im
Out[33]:
array([[[126, 126, 126, 255], <--- grey pixel
[126, 126, 126, 255],
[126, 126, 126, 255],
[126, 126, 126, 255],
[126, 126, 126, 255]],
[[126, 126, 126, 255],
[255, 0, 0, 0], <--- transparent pixel
[255, 0, 0, 0], <--- transparent pixel
[255, 0, 0, 0], <--- transparent pixel
[126, 126, 126, 255]],
[[126, 126, 126, 255],
[126, 126, 126, 255],
[126, 126, 126, 255],
[126, 126, 126, 255],
[126, 126, 126, 255]]], dtype=uint8)
In [34]: im[im[:,:,3]==0]=(1,2,3,4)
In [35]: im
Out[35]:
array([[[126, 126, 126, 255],
[126, 126, 126, 255],
[126, 126, 126, 255],
[126, 126, 126, 255],
[126, 126, 126, 255]],
[[126, 126, 126, 255],
[ 1, 2, 3, 4],
[ 1, 2, 3, 4],
[ 1, 2, 3, 4],
[126, 126, 126, 255]],
[[126, 126, 126, 255],
[126, 126, 126, 255],
[126, 126, 126, 255],
[126, 126, 126, 255],
[126, 126, 126, 255]]], dtype=uint8)
Образец изображения :
Это ряд из трех прозрачных красных пикселей, окруженных непрозрачной серой рамкой шириной в один пиксель. Это довольно мало ...
![enter image description here](https://i.stack.imgur.com/qih9p.png)