c ++ opencv向量到mat而不复制数据

时间:2016-11-09 01:49:16

标签: c++ opencv vector mat

我使用以下函数训练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而无需复制?

0 个答案:

没有答案