ここではベクトル化されたソリューションがあります。あなたのイメージは、基本的に3(色)の配列でhでwです。把握しにくいが非常に強力な放送ルールを利用することができます。
基本的に、配列全体を、あなたが探している値を持つ3つのベクトルと比較します。放送のルールのため、Numpyは各ピクセルをその3つのベクトルと比較し、一致するかどうかを教えてくれます(この特定のケースでは、赤、緑、青が一致する場合)。ですから、あなたはイメージと同じ大きさの真理と偽りの真偽値の配列で終わるでしょう。
ここで、3つの色がすべて一致しているピクセルを探したいだけです。そのためには、 "all"メソッドを使用します。これは、配列のすべての値がtrueの場合に真です。これを特定の軸(この場合は色軸)に適用すると、すべての色が一致していれば、真であるw×hの配列が得られます。
今度は、この2Dブール値マスクをオリジナルのwに3倍の配列で適用し、私たちの色と一致するピクセルを得ることができます。今度は再放送することができます。すべての値は、単純かつ効率的な方法で正またはヌルであるため、ここで
は、例えば、コード
import numpy as np
#create a 2x2x3 image with ones
img = np.ones((2,2,3))
#make the off diagonal pixels into zeros
img[0,1] = [0,0,0]
img[1,0] = [0,0,0]
#find the only zeros pixels with the mask
#(of course any other color combination would work just as well)
#... and apply "all" along the color axis
mask = (img == [0.,0.,0.]).all(axis=2)
#apply the mask to overwrite the pixels
img[ mask ] = [255,0,0]
画像の '.shape'とは何ですか? – gboffi