Вычислительная разница между несколькими изображениями - PullRequest
0 голосов
/ 10 июня 2019

Я новичок в сравнении изображений и использовании лыжного мага. Я пытаюсь получить различие структурного сходства между несколькими изображениями, используя Compare_ssim. Я использую pairwise_distances, чтобы вернуть массив различий между 'n' изображениями. Однако я получаю следующую ошибку:

Traceback (most recent call last):

  File "<ipython-input-40-8451bdf0c9e6>", line 1, in <module>
    m = pairwise_distances(X, X, metric=computeDiff)

  File "C:\Anaconda\lib\site-packages\sklearn\metrics\pairwise.py", line 1432, in pairwise_distances
    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)

  File "C:\Anaconda\lib\site-packages\sklearn\metrics\pairwise.py", line 1067, in _parallel_pairwise
    return func(X, Y, **kwds)

  File "C:\Anaconda\lib\site-packages\sklearn\metrics\pairwise.py", line 1088, in _pairwise_callable
    out[i, j] = metric(X[i], Y[j], **kwds)

ValueError: setting an array element with a sequence.

Я попытался напечатать размер массива и размеры списков пары списков в массиве nd, возвращенных методом Compare_ssim, чтобы проверить, имеют ли они одинаковый размер.

from skimage.measure import compare_ssim
import imutils
import cv2
from sklearn.metrics.pairwise import pairwise_distances
import cvutils
import numpy as np

def computeDiff(x,y):

    print(train_images[int(x)])
    print(train_images[int(y)])

    img1 = cv2.imread(train_images[int(x)])
    img2 = cv2.imread(train_images[int(y)])

    grayA = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
    grayB = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)


    (score, diff) = compare_ssim(grayA, grayB, full=True)
    diff = (diff * 255).astype("uint8")
    print("SSIM: {}".format(score))

    return diff

images_path = "ImagePath"

train_images = []
train_images = cvutils.imlist(images_path)
train_images = list(set(train_images))

X = np.arange(len(train_images)).reshape(-1, 1)

m = pairwise_distances(X, X, metric=computeDiff)

Я надеюсь, что кто-то может помочь указать, что не так с этим кодом и, если возможно, помочь исправить его.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...