我需要帮助。我正在从文本文件中读取数据。它有3列和100行。数据采用(x,y,z)格式。我想将x和y组合成一个Mat数据,将Z组合成另一个Mat数据。
对于Z来说很简单,我创建了它的浮点矩阵。我正在分别阅读x和y,此刻我将它存储为浮动向量。如下面的代码所示。
char buf[255];
float x, y;
float label;
vector<float> x_coord;
vector<float> y_coord;
Mat class_label(y_coord.size(), 1, CV_32FC1);
if(!inFile.eof())
{
while (inFile.good())
{
inFile.getline(buf, 255);
string line(buf);
istringstream iss(line);
iss >> x;
x_coord.push_back(x);
iss >> y;
x_coord.push_back(y);
y_coord.push_back(y);
iss>> label;
class_label.push_back(label);
}
inFile.close();
}
如何将x_coord和y_coord结合起来创建Mat training_data(y_coord.size(), 2, CV_32FC1, train_data );
类型的Mat
这是2列100行。我这样做但它不起作用
float train_data[10938][2];
for (int j = 0; j < 2; j++)
{
for (int i = 0; i < x_coord.size(); i++)
{
int index = j + i * x_coord.size();
train_data[i][j] = x_coord.at(index);
//train_data[i][1] = x_coord.at(i);
}
}
我真的被困在这里请帮助我。
答案 0 :(得分:2)
您可以直接填充Mat而不使用辅助数组train_data
。
for (int j = 0; j < 2; j++)
{
for (int i = 0; i < x_coord.size(); i++)
{
int index = j + i * x_coord.size();
training_data.at<float>(i, j) = x_coord.at(index);
}
}
您也可以在阅读文件时执行相同的操作。有关详细信息,请阅读Mat::at() documentation。