目录结构:
.
|-- data
| |-- 1.jpg
| |-- 1_1.jpg
| `-- 2.jpg
`-- main.py
main.py文件
import numpy as np
import cv2
from sklearn.metrics.pairwise import cosine_similarity
import os
# 假设我们有一个函数,可以将图像转换成特征向量
def image_to_feature_vector(image, size=(32, 32)):
# 将图像大小调整为指定尺寸
return cv2.resize(image, size).flatten()
# 读取图像并转换为特征向量
def load_images(image_paths):
data = []
for image_path in image_paths:
image = cv2.imread(image_path)
feature_vector = image_to_feature_vector(image)
data.append(feature_vector)
return np.array(data)
# 示例图像路径(请根据实际路径修改)
image_paths = [
"./data/1.jpg",
"./data/2.jpg",
"./data/1_1.jpg"
]
# 加载图像并转换为特征向量
data = load_images(image_paths)
# 假设我们有两个类别,每个类别有一个中心向量
# 这里我们简单地取前两个图像的特征向量作为类别中心向量
class_centers = data[:2]
# 计算每个图像与类别中心的余弦相似度
similarities = cosine_similarity(data, class_centers)
# 根据余弦相似度进行分类
predicted_labels = np.argmax(similarities, axis=1)
# 打印分类结果
for i, image_path in enumerate(image_paths):
print(f"Image {image_path} is classified as class {predicted_labels[i]}")