поиск похожих фотографий формат jpg
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». Для более детального поиска предлагаются определенные фильтры, предоставляющие широкий выбор связанных изображений. Этот удобный инструмент дает именно то, что вам необходимо.
Вы можете выбрать из большого списка фильтров, представляющих изображения в виде клипарта, мультфильма, иллюстраций и т. д. Фильтрация позволяет выбрать цвет, размер, тематику и другую подобную информацию. Чтобы воспользоваться этим инструментом, найдите значок камеры в поле поиска и нажмите на него.
Свидетельство о публикации №125041306058