最有效的方法是利用OpenCV的透明API进行像素操作

时间:2016-05-22 17:29:21

标签: c++ opencv

所以我可能会遗漏一些内容,但似乎迭代cv::UMat的唯一方法是首先将其转换为cv::Mat。这是真的?我需要编写许多函数来操作单个像素。我已经对我的代码进行了很多模板化,但由于我必须做的所有切换,事情变得有点复杂。如果我不必在整个地方拨打mat.getMat(flag),那会更好。

谢谢!

例如,我实施了累积总和:

cv::Mat CumSum(const cv::Mat& histogram) {
  cv::Mat cumsum =
      cv::Mat::zeros(histogram.rows, histogram.cols, histogram.type());
  cumsum.at<float>(0) = (histogram.at<float>(0));
  for (int i = 1; i < histogram.total(); ++i) {
    cumsum.at<float>(i) = cumsum.at<float>(i - 1) + histogram.at<float>(i);
  }
  return cumsum;
}

at<type>不存在cv::UMat所以我被迫使用函数重载而不是模板化输入类型。

0 个答案:

没有答案