gpt4 book ai didi

c++ - 使用 vector 中的值(特征)来计算 opencv 的余弦相似度

转载 作者:行者123 更新时间:2023-11-28 02:27:13 36 4
gpt4 key购买 nike

我最近在做一个项目,在这个项目中我提取了一些关于图像的特征,并想使用这些特征找出两张图像之间是否有任何相似之处。以下是我提取的特征列表:

  1. 纵横比(宽度/高度)
  2. 归一化区域(裁剪的 roi 区域到输入图像区域)
  3. 裁剪图片的中心
    和单张图片的其他特征

现在,我想将这些值输入一个 vector ,并使用该 vector 求出余弦相似度。简而言之,使用来自两个图像的 vector ,并找到它们之间的相似性。我知道两个 vector 的叉积是如何工作的,但是
我需要帮助将这些图像存储到 vector 和 vector 的使用中。任何建议将不胜感激。

最佳答案

哦,不太难。

第 1 步:用数字一个接一个地填充特征 (Mat):

Mat feature; // you could use a std::vector, too, but cv::Mat has the 
// handy dot-product used below already built in.
feature.push_back(aspect_ratio);
feature.push_back(area);
feature.push_back(center.x);
feature.push_back(center.y);
feature.push_back(more_stuff);
...

第 2 步:要比较这些特征,请使用余弦范数:

Mat feature_a, feature_b; // composed like above
double ab = feature_a.dot(feature_b);
double aa = feature_a.dot(feature_a);
double bb = feature_b.dot(feature_b);
return -ab / sqrt(aa*bb);

关于c++ - 使用 vector 中的值(特征)来计算 opencv 的余弦相似度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30129800/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com