OpenCV
行列をランダムにシャッフルする機能はありません(行順に並べられています)?
入力:
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;
}