поиск похожих фотографий формат jpg

Для создания программы, которая ищет похожие фотографии в формате JPG, можно использовать технологию компьютерного зрения и обработки изображений.one of the popular libraries for this task is OpenCV.
Here's a step-by-step guide on how to create a simple image similarity search program using Python and OpenCV:

First, install the required libraries:
pip install opencv-python numpy



Import the required libraries and load the images:

import cv2
import numpy as np
import os
import glob

def load_images(directory):
    images = []
    for filename in glob.glob(os.path.join(directory, '*.jpg')):
        img = cv2.imread(filename)
        if img is not None:
            images.append((filename, img))
    return images

# Load images from a directory
images = load_images('path/to/your/images')

Convert images to grayscale and extract features using SIFT (Scale-Invariant Feature Transform) algorithm:
def extract_features(images):
    sift = cv2.SIFT_create()
    features = []
    for _, img in images:
        gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
        keypoints, descriptors = sift.detectAndCompute(gray, None)
        features.append((keypoints, descriptors))
    return features

# Extract features from the loaded images
features = extract_features(images)

Create a function to find similar images based on feature matching:
def find_similar_images(query_image, features, ratio=0.7):
    sift = cv2.SIFT_create()
    gray_query = cv2.cvtColor(query_image, cv2.COLOR_BGR2GRAY)
    query_keypoints, query_descriptors = sift.detectAndCompute(gray_query, None)

    similar_images = []
    for i, (keypoints, descriptors) in enumerate(features):
        matches = cv2.FlannBasedMatcher({'algorithm': 0, 'trees': 5}, {}).knnMatch(query_descriptors, descriptors, k=2)
        good_matches = [m for m, n in matches if m.distance < ratio * n.distance]
        if len(good_matches) > 0.6 * len(query_keypoints):
            similar_images.append((images[i][0], len(good_matches)))

    similar_images.sort(key=lambda x: x[1], reverse=True)
    return similar_images

# Find similar images to the first image in the list
query_image = images[0][1]
similar_images = find_similar_images(query_image, features)

Print the results:
for img_path, similarity_score in similar_images:
    print(f"Similar image found: {img_path} (Similarity score: {similarity_score})")

This simple program will find images similar to the first image in the list based on their visual features. You can modify the code to search for similar images to a specific query image or improve the feature extraction and matching process using other algorithms like SURF, ORB, or deep learning-based methods.



 как сделать из всего этого один рабочий код ->





import cv2
import numpy as np
import os
import glob

def load_images(directory):
    images = []
    for filename in glob.glob(os.path.join(directory, '*.jpg')):
        img = cv2.imread(filename)
        if img is not None:
            images.append((filename, img))
    return images

def extract_features(images):
    sift = cv2.SIFT_create()
    features = []
    for _, img in images:
        gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
        keypoints, descriptors = sift.detectAndCompute(gray, None)
        features.append((keypoints, descriptors))
    return features

def find_similar_images(query_image, features, ratio=0.7):
    sift = cv2.SIFT_create()
    gray_query = cv2.cvtColor(query_image, cv2.COLOR_BGR2GRAY)
    query_keypoints, query_descriptors = sift.detectAndCompute(gray_query, None)

    similar_images = []
    for i, (keypoints, descriptors) in enumerate(features):
        matches = cv2.FlannBasedMatcher({'algorithm': 0, 'trees': 5}, {}).knnMatch(query_descriptors, descriptors, k=2)
        good_matches = [m for m, n in matches if m.distance < ratio * n.distance]
        if len(good_matches) > 0.6 * len(query_keypoints):
            similar_images.append((images[i][0], len(good_matches)))

    similar_images.sort(key=lambda x: x[1], reverse=True)
    return similar_images

# Load images from a directory
images = load_images('папка с фото')

# Extract features from the loaded images
features = extract_features(images)

# Find similar images to the first image in the list
query_image = images[0][1]
similar_images = find_similar_images(query_image, features)

# Print the results
for img_path, similarity_score in similar_images:
    print(f"Similar image found: {img_path} (Similarity score: {similarity_score})")





   **




  folder_path = '.'


Эта строка кода на Python присваивает переменной folder_path значение строки '.', что обозначает текущую директорию, в которой выполняется скрипт.

Таким образом, если вы используете folder_path в дальнейшем коде для работы с файлами или папками, это будет относиться к текущему местоположению вашего скрипта. Например, вы можете использовать эту переменную для чтения или записи файлов в текущей директории. ;




   **



1. TinEye

TinEye – инструмент для поиска похожих на оригинал изображений, требующий, чтобы вы либо ввели URL, либо загрузили картинку, чтобы узнать, откуда она появилась. Эта поисковая система проста в использовании и отличается дружественным интерфейсом.

Можно также использовать расширение браузера TinEye для быстрого поиска: нажмите правой кнопкой мыши на любое изображение и найдите его.


2. Google Images

Никто не опережает Google Images, когда дело доходит до поиска изображений.
Все, что вам нужно сделать – ввести ключевое слово и нажать «Enter». Для более детального поиска предлагаются определенные фильтры, предоставляющие широкий выбор связанных изображений. Этот удобный инструмент дает именно то, что вам необходимо.

Вы можете выбрать из большого списка фильтров, представляющих изображения в виде клипарта, мультфильма, иллюстраций и т. д. Фильтрация позволяет выбрать цвет, размер, тематику и другую подобную информацию. Чтобы воспользоваться этим инструментом, найдите значок камеры в поле поиска и нажмите на него.


Рецензии