Как скрыть перекрывающиеся пиксели, используя подушку? - PullRequest
0 голосов
/ 22 сентября 2018

У меня есть два изображения одинаковых размеров как таковых:

enter image description here

enter image description here

Свнешний круг должен иметь близкие к перекрывающимся пикселям, я хотел бы иметь результирующее изображение, которое имеет внутренний круг из изображения A и квадрат из изображения B. Я думал, что инвертирование изображения A и затем вызов PIL.Image.composite(imageA, imageB, mask) сделают что-то, но это простодал мне комбинацию imageA и imageB.

Есть ли способ сделать то, что я хочу, используя подушку или, возможно, каким-то образом использовать numpy, чтобы сделать белыми пиксели, которые похожи между обоими изображениями?

1 Ответ

0 голосов
/ 22 сентября 2018

Я думаю, что вы ищете XOR между двумя изображениями.

Я буду работать над этим медленно, если вы не выполняете много вычислений логических выражений, поэтому, начиная с ИЛИ , вы получите белые пиксели в результате, где либо изображение A ИЛИ изображение B имеет белые пиксели.Затем с AND вы получите белые пиксели, где оба изображения A И изображения B белые.Наконец, с XOR вы получите белые пиксели там, где либо изображение A, либо изображение B, но исключительно одно или другое , но не оба имеют белые пиксели.

В коде это выглядит так:

#!/usr/local/bin/python3
from PIL import Image, ImageChops

# Load up the two images, discarding any alpha channel
im1 = Image.open('im1.png').convert('1')
im2 = Image.open('im2.png').convert('1')

# XOR the images together
result = ImageChops.logical_xor(im1,im2)
result = ImageChops.invert(result)

# Save the result
result.save('result.png')

enter image description here

...