Я использую python 3: что я пытаюсь сделать? У меня есть список картинок (некоторые из них одинаковые, но с разными именами), я хочу сравнить их, просматривая список и группируя картинки, которые совпадают в подсписке или словаре,
* Например, 1002 * это список из 3000
pictures = [ 'A', 'B','D','F',...]
, который показывает, что после сравнения одинаковых
'A'
и
'D'
и
'B'
и `` F'` я хочу создать новый список. с подсписком, как, например,
new list = [['A','D'],['B','F'],...
или
mydict={ 'pic1'=['A','D'],'pic2'=['B','F'],...}.
В заключение я хочу упорядочить картинки, сгруппировав их, для тех, у кого разные имена, но одинаковые в одной группе .
Проблема, которую я обнаружил, заключается в том, что мой l oop не обновляет исходный список, удаляя те, которые совпадают, и после добавления в новый список, затем следующий элемент не должен быть таким же как следующий. для следующей итерации.
Я пробовал несколько методов, но ни один из них не обновляет исходный список (3000 один), некоторые каталог содержит 3000 элементов, этот последний метод дает индекс вне диапазона (k)
obj={}
for i in range(len(somecatalogue)):
while True:
#create a item for group same picture but different name
obj['catalogue'+str(i)] = []
for k in range(len(somecatalogue)):
imageA = cv2.imread("C:\\Users\\"+somecatalogue[i])
imageB = cv2.imread("C:\\Users\\products_images\\"+somecatalogue[k])
#resizing the pictures height and width
if imageA.shape[0]*imageA.shape[1] > 0:
H, W,C = imageA.shape
# to resize and set the new width and height
imageB = cv2.resize(imageB, (W,H))
#compare the picture+color, add it to the list of the dictionary , and remove it from the original
if(measure.compare_ssim(imageA,imageB,multichannel=True)==1):
obj['catalogue'+str(i)].append(somecatalogue[k])
del(somecatalogue[k])
#dont product more items form the dictionary if the, there is not more item leave to compare
if (len(somecatalogue))==0:
break