Итак, у меня есть два изображения PIL RGBA. То, что я хочу сделать, это найти все места, где значения 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)
.
Я не думал, что я пытался передать их вместе, я просто хотел найти детексы, которые, я думаю, в свою очередь транслирует их в этом заявлении. Есть ли другой способ сделать это или способ не транслировать неравные формы?
'img1 [:,::: -1]' приводит к массиву формы '32, 32, 3'. 'img1 [:,:, 3]' приводит к массиву формы '32, 32'. – mgilson
@mgilson да, я знаю. Но что я пытаюсь сделать ясно? Я думал, что вышеупомянутое будет работать, потому что я думал, что «np.where» разрешит несколько операторов «где», а не транслировать их вместе. – ZWiki
И, чтобы указать немного стиля, здесь продолжение '' 'для продолжения строки здесь не нужно. Python объединяет строки, которые находятся в незакрытых скобках, скобках или скобках (как это имеет место здесь). Фактически, PEP 8 («официальный» стиль) рекомендует использовать скобки для продолжения строк и _never_ с помощью '' 'для продолжения строки. – mgilson