我正在尝试从文本文件中读取128D人脸矢量。
你如何做到的?
如果我有多个人脸矢量,如何在一个变量中读取它们并将其与传入的人脸进行比较?
答案 0 :(得分:0)
我正在尝试从文本文件中读取128D人脸矢量。你如何做到的?
这取决于您的电话号码格式。它们是CSV格式吗?还是像JSON或XML这样的描述符格式?还是由空格分隔的纯值?
例如,假设您有一个文本文件,其中包含用空格分隔的值,如下所示:
39.5 23.2 23.8 23.9 12.3
您可以将其读入这样的向量中:
#include <fstream>
#include <vector>
int main(){
std::vector<double> faceVector; // we fill the numbers into this vector
std::fstream fs("path/to/nums.txt", std::fstream::in ); // make the file stream
double num;
while (fs >> num) { // read in the number. Stops when no numbers are left
faceVector.push_back(num); // add the number to the vector
}
for (double d : faceVector) {
printf("value is %f\n", d); // print each number in the vector to see if it went right
}
return 0;
}
std::vector
faceVector
现在包含文件中的值。
如果我有多个面部向量,如何在一个变量中读取它们 并将其与传入的面孔进行比较?
您可以通过编写将矢量作为参数并返回有意义值的函数来比较矢量。例如,此函数计算两点之间的距离:
double distance(std::vector<double> &a, std::vector<double> &b) {
double result = 0.0;
for (int i = 0; i < a.size(); i++) result += (a[i] - b[i]) * (a[i] - b[i]);
return sqrt(result);
}
您可以像这样使用它:
std::vector<double> a = { 1, 2, 3 };
std::vector<double> b = { 4, 5, 6 };
printf("distance: %f", distance(a, b));