我使用以下函数训练svm:
void Trainer::train(const std::vector<std::vector<float>>& data, const std::vector<int>& labels) {
cv::Mat trainData(data.size(), data.at(0).size(), CV_32FC1);
for (int i = 0; i < data.size(); ++i)
for (int j = 0; j < data.at(0).size(); ++j)
trainData.at<float>(i, j) = data.at(i).at(j);
cv::Mat trainLabels(labels.size(), 1, CV_32FC1);
for (int i = 0; i < labels.size(); ++i)
trainLabels.at<float>(i) = static_cast<float>(labels.at(i));
this->svm.train(trainData, trainLabels, cv::Mat(), cv::Mat(), this->params);
}
我的问题是data
非常大,当我创建trainData
Mat
时,它只是复制它自己。有没有办法在Mat
vector
之内创建vectors
而无需复制?