почему путь к фотографиям не сохраняется в массиве?
Я вроде как всё сделал правильно, проверил несколько раз, но оно никак не работает. Прога должна проверить фотографии на схожесть на 100% друг с другом, потом добавить повтолряющиеся фото в bad_image и не повторяющиеся в good_image, pic_image и pic_image1 времмено хранят в себе цвета пикселей с фото
from PIL import Image, ImageChops
import glob
filename_list = glob.glob('C:/Users/administrator/Desktop/1/image/*.jpeg')
filename_list1 = glob.glob('C:/Users/administrator/Desktop/1/image/*.jpg')
filename_list2 = glob.glob('C:/Users/administrator/Desktop/1/image/*.png')
images = filename_list + filename_list1 + filename_list2
used_images = []
bad_image = []
good_image = []
pic_image = []
pic_image1 = []
for i in range(len(images)):
for j in range(len(images)):
if i != j:
image1 = Image.open(images[j])
image = Image.open(images[i])
width1 = image1.size[0]
width = image.size[0]
height1 = image1.size[1]
height = image.size[1]
pix1 = image1.load()
pix = image.load()
if width == width1 and height == height1:
for k in range(width):
for l in range(height):
pic_image.append(pix[k, l])
for k1 in range(width1):
for l1 in range(height1):
pic_image1.append(pix1[k1, l1])
if pic_image == pic_image1:
if len(bad_image) != 0:
for m in range(len(bad_image)):
if bad_image[m] != images[i] and m == len(bad_image):
bad_image.append(images[i])
else:
bad_image.append(images[i])
if len(good_image) != 0:
for m in range(len(good_image)):
if good_image[m] != images[i] and m == len(good_image):
good_image.append(images[i])
print(i)
else:
good_image.append(images[i])
print(i)
else:
if len(good_image) != 0:
for m in range(len(good_image)):
if good_image[m] != images[i] and m == len(good_image):
good_image.append(images[i])
print(i)
else:
good_image.append(images[i])
print(i)
pic_image.clear()
pic_image1.clear()
else:
if len(good_image) != 0:
for m in range(len(good_image)):
if good_image[m] != images[i] and m == len(good_image):
good_image.append(images[i])
print(i)
else:
good_image.append(images[i])
print(i)
print(f'-------\n{len(good_image)}\n-------\n{len(bad_image)}')
Ответы (1 шт):
Автор решения: Александр
→ Ссылка
from io import BytesIO
import requests
from PIL import Image
from PIL import ImageChops
images_data = list()
good_images = list()
bad_images = list()
urls = [
"https://javasea.ru/uploads/posts/2018-07/1530723114_morda-lva-lyudoeda.jpg",
"https://javasea.ru/uploads/posts/2018-07/1530723114_morda-lva-lyudoeda.jpg",
"https://javasea.ru/uploads/posts/2021-09/1632834531_art_-morda-lva-vo-mrake.jpeg"]
for url in urls:
data = Image.open(BytesIO(requests.get(url).content))
images_data.append(data)
for image_one, image_two in zip(images_data, images_data[1::]):
result = ImageChops.difference(image_one, image_two)
if result.getbbox() is None:
good_images.append(image_one)
else:
bad_images.append(image_one)
print(len(good_images)) # 1
print(len(bad_images)) # 1