Я пытаюсь сохранить изображения на основе сравнения. Если результат сравнения меньше 0,01, он должен находиться в той же папке, если не нужно создавать новый каталог и в нем должен находиться образ, если значение не меньше 0,01, он не создает папку, в которой изображение должно быть сохранено.
здесь я проверяю его
d2 = cv2.matchShapes(img_1,img_2,cv2.CONTOURS_MATCH_I2,1)
if d2 <= 0.01:
, в этом случае каждое изображение сравнивается со вторым изображением, второе изображение сравнивается с третьим и скоро. Если d2 больше 0,01, следует создать новый каталог, и изображение будет сохранено в этой категории, чего сейчас не происходит.
Буду признателен за любую помощь
это код
visited_images = []
similarity_dict = {}
count = 0
for image_1_path in os.listdir("noise"):
img_1 = cv2.imread(os.path.join("noise", image_1_path),cv2.IMREAD_GRAYSCALE)
visited_images.append(image_1_path)
for image_2_path in os.listdir("noise"):
if image_2_path in visited_images:
continue
img_2 = cv2.imread(os.path.join("noise", image_2_path),cv2.IMREAD_GRAYSCALE)
d2 = cv2.matchShapes(img_1,img_2,cv2.CONTOURS_MATCH_I2,1)
if d2 <= 0.01:
visited_images.append(image_2_path)
if image_1_path not in similarity_dict.keys():
count += 1
similarity_dict[image_1_path] = [image_2_path]
os.mkdir(os.path.join("sorted-characters", str(count)))
cv2.imwrite(os.path.join("sorted-characters", str(count), image_1_path),img_1)
cv2.imwrite(os.path.join("sorted-characters", str(count), image_2_path),img_2)
continue
similarity_dict[image_1_path].append(image_2_path)
cv2.imwrite(os.path.join("sorted-characters", str(count), image_1_path),img_1)
cv2.imwrite(os.path.join("sorted-characters", str(count), image_2_path),img_2)
print(visited_images)
, когда я распечатываю посещенные изображения, он показывает все изображения в этом списке, что означает, что он посещает все изображения в папке шумов
это вывод папки шумов
['1.png']
['1.png', '2.png']
['1.png', '2.png', '3.png', 'Img_219.png']
['1.png', '2.png', '3.png', 'Img_219.png', 'Img_219.png']