随机顺序洗牌cv::Mat在OpenCV中

Random order shuffle cv::Mat in OpenCV

本文关键字:Mat OpenCV cv 顺序 随机      更新时间:2023-10-16

OpenCV中是否没有随机打乱matrx(按行排序)的函数?

输入:

1 2 3
4 5 6
7 8 9

输出:

4 5 6
7 8 9
1 2 3

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

打乱矩阵行的代码:

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;
}