Я пытаюсь вычислить euclidean distance
между двумя изображениями.Для этого я сначала получаю массив 128d
изображения, а затем использую cv2.norm()
, чтобы получить расстояние.Ниже приведен код:
embedder = cv2.dnn.readNetFromTorch(<model_path>)
embedder.setInput(faceBlob)
unknown_vector = embedder.forward()
###
# SOME CODE
###
for i in range(len(known_embeddings["embeddings"])):
known_vector = known_embeddings["embeddings"][i]
distance = cv2.norm(unknown_vector, known_vector)
, но выше cv2.norm()
дает ошибку ниже:
cv2.error: OpenCV(4.1.0) C:\projects\opencv-python\opencv\modules\core\src\norm.cpp:1018: error:
(-215:Assertion failed) _src1.sameSize(_src2) && _src1.type() == _src2.type() in function 'cv::norm'
Я напечатал known_vector
и unknown_vector
иэто выглядит так:
known_vector = [ 0.05413035 0.0257974 0.00822693 -0.02118884 -0.00418675 0.21330039
0.04995908 0.08850633 -0.10475695 0.04271172 0.08244997 0.11823266
0.05605 -0.26287156 -0.03104441 -0.11828042 -0.10454978 0.08653253
0.05605 -0.26287156 -0.03104441 -0.11828042 -0.10454978........... ]
unknow_vector = [[ 0.0166864 0.14611466 -0.06341252 -0.017478 0.04083985 0.28554845
0.03665403 -0.03293686 -0.05170902 0.07699523 0.06401276 -0.03113891
0.05892153 -0.16073132 0.04638063 -0.01014538 -0.07338376 0.07749851
0.02471998 -0.10915973 0.16763256 -0.02218471 -0.06936902........... ]]
Итак, сверху это выглядит так, как будто они разные по форме.Как я могу преобразовать unknown_vector
, чтобы соответствовать форме known_vector
.Пожалуйста помоги.Спасибо