File size: 1,735 Bytes
da7dbd0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49

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