from src.application.image.image_comparison import compare_images, get_image_from_file, get_image_from_url from src.application.image.model_detection import image_generation_detection from src.application.image.search_yandex import yandex_reverse_image_search def compare_list_of_images(news_image_path, img_urls): news_image = get_image_from_file(news_image_path) # TODO: news_image_path is arrays if news_image is None: return None, -1 matched_url = "" max_similarity = 0 for url in img_urls: print(f"\t{url}") referred_image = get_image_from_url(url) if referred_image is None: continue distance = compare_images(news_image, referred_image) # Hamming algorithm similarity = max(100 - distance, 0) if similarity > max_similarity: max_similarity = similarity matched_url = url if max_similarity > 90: return matched_url, max_similarity return None, -1 def detect_image_from_news_image(news_image_path, image_urls): print("\tFrom news:") for url in image_urls: print(f"\t{url}") return compare_list_of_images(news_image_path, image_urls) def detect_image_by_reverse_search(news_image_path): image_urls = yandex_reverse_image_search(news_image_path) # url or file_path print("\tFrom search engine:") for url in image_urls: print(f"\t\t{url}") return compare_list_of_images(news_image_path, image_urls) def detect_image_by_ai_model(news_image_path): print("\tFrom AI model:") image_prediction_label, image_confidence = image_generation_detection( news_image_path, ) return image_prediction_label, image_confidence