3

OpenCV行列をランダムにシャッフルする機能はありません(行順に並べられています)?

入力:

1 2 3
4 5 6
7 8 9

出力:

4 5 6
7 8 9
1 2 3

cv::randShuffle 関数は、新しい C++ API を使用している配列全体の要素をランダムに並べ替えるだけのようです

4

1 に答える 1

8

行列の行をシャッフルするコード:

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;
}
于 2014-04-18T10:43:33.400 に答える