【问题标题】:Random order shuffle cv::Mat in OpenCVOpenCV中的随机顺序洗牌cv :: Mat
【发布时间】:2016-03-23 08:38:17
【问题描述】:

OpenCV 中是否没有函数可以随机打乱矩阵(按行排序)?

输入:

1 2 3
4 5 6
7 8 9

输出:

4 5 6
7 8 9
1 2 3

cv::randShuffle 函数似乎只是对整个数组中的元素进行随机排序 我正在使用更新的 C++ API

【问题讨论】:

  • opencv 是一个很棒的矩阵操作库,但是对于这种极端情况没有任何方法。
  • 这种琐碎的矩阵操作方法都不见了,真是太糟糕了。来自 Python 和 MATLAB/OCTAVE 背景的人,这些缺失的功能令人恼火。

标签: c++ opencv


【解决方案1】:

洗牌矩阵行的代码:

cv::Mat shuffleRows(const cv::Mat &matrix)
{
  std::vector <int> seeds;
  for (int cont = 0; cont < matrix.rows; cont++)
    seeds.push_back(cont);

  cv::randShuffle(seeds);

  cv::Mat output;
  for (int cont = 0; cont < matrix.rows; cont++)
    output.push_back(matrix.row(seeds[cont]));

  return output;
}

【讨论】:

  • sn-p 执行所需的操作,但 patternMatrix 变量是拼写错误并导致编译时错误,因此应更改为 matrix
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-30
  • 2016-04-26
  • 1970-01-01
相关资源
最近更新 更多