两幅图像之间不能做余弦相似,如何使两者长度相同

2024-05-23 15:15:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一些面部验证的东西(我是一个新手)首先我矢量化的2张照片,我想比较

filename1 = '/1_52381.jpg'
filename2 = '/1_443339.jpg'

img1 = plt.imread(filename1)
rows,cols,colors = img1.shape
img1_size = rows*cols*colors
img1_1D_vector = img1.reshape(img1_size).reshape(-1, 1)


img2 = plt.imread(filename2)
rows,cols,colors = img2.shape
img2_size = rows*cols*colors
img2_1D_vector = img2.reshape(img2_size).reshape(-1, 1)

(img2_1D_vector.shape,img1_1D_vector.shape)

这两个向量的维数是:((30960,1),(55932,1))。 现在我的问题是如何使他们两个相同的长度我需要重塑图片有相同的大小第一?o矢量化后我能做吗?谢谢你的阅读


Tags: sizeplt矢量化rowsjpgimg1colsvector
1条回答
网友
1楼 · 发布于 2024-05-23 15:15:13

是的,要计算余弦相似性,你需要向量具有相同的维数,在将其中一张图片重塑为向量之前调整其大小是一个很好的解决方案

要调整大小,可以使用python中提供的一个图像处理框架

注意:它们是可用于调整大小的不同算法/参数

# with skimage (you can also use PIL or cv2)
from skimage.transform import resize

shape = img1.shape
img2_resized = resize(img1, shape)

img1_vector = img1.ravel()
img2_vector = img2_resized.ravel()

# now you can perform your cosine similarity between img1_vector and img2_vector
# which are of the same dimension

你可能不想缩小大图而不是放大小图,因为放大可能会引入更多的人工制品。 您可能还希望处理整个数据集的固定大小帐户

相关问题 更多 >