在OpenCV中随机顺序shuffle cv :: Mat

gar*_*rak 3 c++ opencv

有没有函数OpenCV随机乱洗matrx(按行排序)?

输入:

1 2 3
4 5 6
7 8 9
Run Code Online (Sandbox Code Playgroud)

输出:

4 5 6
7 8 9
1 2 3
Run Code Online (Sandbox Code Playgroud)

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

Jos*_*lez 7

用于混洗矩阵行的代码:

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;
}
Run Code Online (Sandbox Code Playgroud)