Я просматриваю документы Python Imaging Library, чтобы найти способ сделать 2 похожих изображения и " вычесть одно из другого ". Вот наглядное пособие:
Мы все видели эти изящные вещи, «превращающие слово в его значение», верно? Я хочу взять второе изображение и вычесть первое изображение, поэтому я хочу вернуть только строки, добавленные к слову «кошка», чтобы создать настоящего кота. Какие функции мне в этом помогут?
Обновление: я постоянно работал над этим, пока ждал. Это то, что я пробовал.
import numpy as np
from PIL import Image
from PIL import ImageChops
import math,operator, matplotlib.cm as cm
img1 = Image.open("cat1.PNG")
img2 = Image.open("cat2.PNG")
img1array = (list(img1.getdata()))
img1new = Image.fromarray(np.uint8(cm.gist_earth(img1array)*255))
img2array = (list(img2.getdata()))
img2new = Image.fromarray(np.uint8(cm.gist_earth(img2array)*255))
dif = np.fabs(np.subtract(img2array[:], img1array[:]))
difimg = Image.fromarray(np.uint8(cm.gist_earth(dif)*255))
difimg.save("out1.PNG")
Однако это выводит файл, который Windows 10 даже не может открыть. Моя идея заключалась в том, чтобы преобразовать оба изображения в массив, вычесть их, а затем воссоздать разницу в виде изображения. Это действительно сохраняет файл с именем out1.PNG
, но Windows выдает ошибку при попытке его открыть: We can't open this file.
Примечание. Я изменил размер второго изображения с помощью онлайн-средства изменения размера, PIL вызывал у меня проблемы с различиями в размерах ...