Duplicate Image Detector не удаляет все дубликаты файлов - PullRequest
0 голосов
/ 06 мая 2019

Я использую двойной цикл for для перебора файлов в моей папке Picture.Если первое изображение равно второму изображению, я затем удаляю второе изображение из папки и удаляю изображение из списка файлов, через которые я перебираю.Моя программа оставляет дубликаты изображений и не удаляет их, но когда я снова запускаю программу, она удаляет дубликаты изображений.Как правильно перебрать файлы, чтобы можно было удалить все дубликаты изображений?

Я пытался сократить ненужные циклы if, else, чтобы убедиться, что файл не проскальзывает черезпрограмма.

path = "Pictures"
directory = os.listdir(path)

for first_file in directory:
    for second_file in directory:

        if first_file == second_file:
            continue

        if first_file.endswith(".jpg") and second_file.endswith(".jpg"):

            first_file_path = R"Pictures\{}".format(first_file)
            second_file_path = R"Pictures\{}".format(second_file)

            img1 = cv2.imread(first_file_path, 1)
            img2 = cv2.imread(second_file_path, 1)

            img1 = cv2.resize(img1, (100,100))
            img2 = cv2.resize(img2, (100,100))

            difference = cv2.subtract(img1, img2)
            b, g, r = cv2.split(difference)

            if cv2.countNonZero(b) == 0 and cv2.countNonZero(g) == 0 and cv2.countNonZero(r) == 0:
                os.remove(second_file_path)
                directory.remove(second_file)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...