私はRGBAのPILイメージを2つ持っています。私は何をしたいのRGB値が同じであるすべての場所を見つけることで、アルファは、それはこのようになります255です:Numpyで配列のサイズを変えてどこを使うか
from PIL import Image
import numpy as np
img1 = np.array(Image.open(/path/to/img1).convert('RGBA'), float).reshape(32,32,4)
img2 = np.array(Image.open(/path/to/img2).convert('RGBA'), float).reshape(32,32,4)
# Checks to see if RGB of img1 == RGB of img2 in all locations that A=255
np.where((img1[:,:,:-1] == img2[:,:,:-1]) &\ # RGB check
(img1[:,:,3] == 255)) # Alpha check
しかし、これはoperands could not be broadcast together with shapes (32,32,3) (32,32)
になります。
私はそれらを一緒に放送しようとは思わなかった、私はちょうど私がこの声明でそれらを放送すると思うindecesを見つけることを望んでいた。これを行う別の方法があるか、または不等形をブロードキャストしない方法がありますか?
'img1 [:,:、:-1]'は、形状が '32、32、3'の配列になります。 'img1 [:,:、3]'は、形状が '32,32'の配列になります。 – mgilson
@mgilsonはい私は知っています。しかし、私は明確に達成しようとしているのですか?私は、 'np.where'が複数の" where "ステートメントを一緒にブロードキャストしないようにすると考えていたので、上記がうまくいくと思いました – ZWiki
そして、少しスタイルを指摘するために、ここで行継続の' \ 'は不要です。 Pythonは、非中括弧、角括弧、かっこ内にある行を連結します(ここではそうです)。実際、PEP 8( "公式"スタイルガイド)は、行を続けるにはカッコを使用し、行継続には '\ 'を使用することを推奨していません。 – mgilson