在OpenCV中生成随机数矩阵

SNB*_*SNB 4 random opencv matrix

我想知道如何生成任何给定大小的随机数矩阵,例如2x4.例如,矩阵应由范围内的带符号整数组成[-500, +500].

我已经阅读了RNG的文档,但我不确定如何使用它.我也提到了这个问题,但这并没有为我提供我正在寻找的解决方案.

我知道这可能是一个愚蠢的问题,但任何有关它的帮助都会得到真正的赞赏.

Mik*_*iki 12

如果要将值均匀分布,可以使用cv :: randu

Mat1d mat(2, 4); // Or: Mat mat(2, 4, CV_64FC1);
double low = -500.0;
double high = +500.0;
randu(mat, Scalar(low), Scalar(high));
Run Code Online (Sandbox Code Playgroud)

请注意,上限是独占的,因此此示例表示范围内的数据[-500, +500).


如果希望值正态分布,可以使用cv :: randn

Mat1d mat(2, 4); // Or: Mat mat(2, 4, CV_64FC1);
double mean = 0.0;
double stddev = 500.0 / 3.0; // 99.7% of values will be inside [-500, +500] interval
randn(mat, Scalar(mean), Scalar(stddev));
Run Code Online (Sandbox Code Playgroud)

这适用于最多4个通道的矩阵,例如:

Mat3b random_image(100,100);
randu(random_image, Scalar(0,0,0), Scalar(256,256,256));
Run Code Online (Sandbox Code Playgroud)