У меня есть 5 изображений, которые я хочу создать матрицу, которая сравнивает разные изображения друг с другом. Я хочу визуализировать разницу между изображениями. (или другая функция). Так что это может выглядеть так ...
Есть ли в пакете функция, которая может это уже делать. Я ничего не могу найти на нем.
Код для рабочего примера - нужно загрузить откуда-то 5 изображений. Я предполагаю, что просто спрашиваю, находится ли этот процесс уже в функции.
import matplotlib.pyplot as plt
from skimage import data
import numpy as np
import cv2
import os
import re
# Read in images
images = []
dir = "C:/PATH/shipsnet/"
for type in os.listdir(dir):
img_file = dir + "/" + type + "/image_1.png"
images.append(data.imread(img_file, pilmode="RGB"))
# create a dict containing the index and diffed image
diff_table = {}
size = np.arange(0,5)
combos = np.array(np.meshgrid(size, size)).T.reshape(-1,2)
for combo in combos:
image_1 = images[combo[0]]
image_2 = images[combo[1]]
diff_table[str(combo)] = cv2.absdiff(image_1, image_2)
# plot the table
f, axarr = plt.subplots(6, 6, figsize=(10, 10))
for row in diff_table:
location = list(map(int, re.findall(r'\d+',row)))
row = location[0]
col = location[1]
key = "["+str(row)+" "+str(col)+"]"
axarr[row + 1, col + 1].imshow(diff_table[key], interpolation='nearest')
for i,image in enumerate(images):
axarr[i + 1, 0].imshow(images[i], interpolation='nearest')
axarr[0, i + 1].imshow(images[i], interpolation='nearest')
[axi.set_axis_off() for axi in axarr.ravel()]
plt.tight_layout()
plt.show()
с выводом, являющимся ....