在OpenCV中生成随机数矩阵

时间:2016-02-20 16:49:24

标签: opencv matrix random

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

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

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

1 个答案:

答案 0 :(得分:9)

如果您想要将值统一分发,可以使用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));

请注意,上限是独占的,因此此示例表示范围[-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));

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

Mat3b random_image(100,100);
randu(random_image, Scalar(0,0,0), Scalar(256,256,256));